7

strtotime()如果您可以为它提供它可以理解并可以转换的日期格式,那么在 PHP 中的效果会很好,但是例如,您给它一个英国日期它无法提供正确的 unix 时间戳。

是否有任何官方或非官方的 PHP 函数可以接受格式变量,该变量告诉函数以哪种格式传递日期和时间?

我最接近这样做的是混合date_parse_from_format()mktime()

// Example usage of the function I'm after
//Like the date() function but in reverse
$timestamp = strtotimeformat("03/05/2011 16:33:00", "d/m/Y H:i:s");
4

3 回答 3

23

如果你有 PHP 5.3:

$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();
于 2011-05-03T15:37:30.823 回答
2

我认为您正在寻找strptime。您可以使用它来解析日期,然后在需要 UNIX 时间戳时使用mktime 。

function strotimeformat($date, $format) {
  $d = strptime($date, $format);
  return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'],
                $d['tm_mon'], $d['tm_mday'], $d['tm_year']);
}

这适用于 PHP 5.1 及更高版本。

于 2011-05-03T15:37:03.640 回答
0

strtotime/用作分隔符时假定它是美国日期/时间。要让它认为它是欧元日期/时间,请使用-.作为日期分隔符。您可以使用简单的方法将 s 更改/-s 或s.str_replace()

于 2011-05-03T15:42:26.710 回答