2012-11-29 98 views
3

我有一个关于该date_parse_from_format()方法的问题:date_parse_from_format到UNIX时间戳

$parsed = date_parse_from_format("Y d M H:i T", '2012 28 Nov 21:00 CET'); 

返回关联数组有关给定日期的详细信息。

这将返回一个包含某些日期信息的数组。但有什么办法将它转换为unix时间戳吗?

回答

6

约翰,

继承人如何实现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) 
+0

感谢提供示例 – Johan

+1

@Johan绝对!我从自己的例子中学习...... :-P – phpisuber01

4

您可以通过尝试在日期中使用mktime()来获得UNIX时间戳。

例如:

echo mktime(12, 20, 0, 10, 4, 2012); 

你会得到这样的1349353200

输出如果你想AM/PM只需添加12〜下午是否小时。

例如:

mktime($isAM ? $hrs : ($hrs + 12), $mins, $secs, $m, $d, $y); 

,你也可以使用的strtotime():

strtotime() - 解析任何英文文本的日期时间描述为Unix时间戳

echo strtotime("2012-11-03 11:24:00PM"); 

你会得到那样的输出1351985040