我对date_parse_from_format()
方法有疑问:
$parsed = date_parse_from_format("Y d M H:i T", '2012 28 Nov 21:00 CET');
返回关联数组,其中包含有关给定日期的详细信息。
这将返回一个包含日期信息的数组。但有没有办法将其转换为unix时间戳?
答案 0 :(得分:7)
约翰,
下面是如何在您的场景中实现mktime的确切示例:
$parsed = date_parse_from_format("Y d M H:i T", '2012 28 Nov 21:00 CET');
$new = mktime(
$parsed['hour'],
$parsed['minute'],
$parsed['second'],
$parsed['month'],
$parsed['day'],
$parsed['year']
);
echo $new; //returns: 1354136400
为了将来参考,您可以在数组上使用var_dump()
或print_r()
来查看如何访问嵌套值。
$解析的var_dump
array (size=16)
'year' => int 2012
'month' => int 11
'day' => int 28
'hour' => int 21
'minute' => int 0
'second' => int 0
'fraction' => boolean false
'warning_count' => int 0
'warnings' =>
array (size=0)
empty
'error_count' => int 0
'errors' =>
array (size=0)
empty
'is_localtime' => boolean true
'zone_type' => int 2
'zone' => int -60
'is_dst' => boolean false
'tz_abbr' => string 'CET' (length=3)
答案 1 :(得分:4)
您可以尝试使用mktime()作为日期来获取UNIX时间戳。
例如:
echo mktime(12, 20, 0, 10, 4, 2012 );
您将获得类似1349353200
如果你想AM / PM只需加12小时,如果PM。
例如:
mktime($isAM ? $hrs : ($hrs + 12), $mins, $secs, $m, $d, $y);
你也可以使用strtotime():
strtotime() - 将任何英文文本日期时间描述解析为Unix时间戳
echo strtotime("2012-11-03 11:24:00PM");
您将获得类似1351985040
答案 2 :(得分:0)
mktime()应该完全符合您的需求:)查看http://php.net/manual/en/function.mktime.php以了解如何使用它!
答案 3 :(得分:0)
在PHP> = 5.3中,您可以使用DateTime构造函数,其功能与date_parse_from_format
完全相同。优点:单线。
例如,要将英国格式的日期转换为UNIX时间戳,我们可以这样做:
DateTime::createFromFormat("d/m/Y, H:i", '27/03/2020, 22:00')->getTimestamp()
-> int(1585346400)