我在尝试将Unix时间(从SVN Info命令生成的XML文件中获取)转换为格式化的日期/时间时遇到问题。
$svnInfoTime
是正确的,生成的$unixTime
反映了这一点,尽管$formattedDate
似乎有点偏离。
我在许多(但不是全部)情况下看到过这种情况。一个例子:
<?php
$svnInfoTime = "2013-03-06T15:42:00.894378Z";
$unixTime = strtotime($svnInfoTime);
$formattedDate = date('d F, Y, h:i A', $unixTime);
echo "SVN info time : " . $svnInfoTime . "<br>";
echo "unix time : " . $unixTime . "<br>";
echo "formatted date: " . $formattedDate . "<br>";
>
输出:
SVN info time : 2013-03-06T15:42:00.894378Z
unix time : 1362584520
formatted date: 06 March, 2013, 04:42 PM
为什么格式化日期显示下午4:42,而Unix时间是下午3:42 ??
谁能告诉我我哪里错了?PHP的date()
函数在输出/格式化日期时会考虑您的时区设置。
检查您所在的时区,或者将您的自定义时区设置传递给date
函数以获得3:42 PM的输出。
注:它在codepad.viper-7.com上运行良好
编辑
在date()
调用之前传递不同的时区(Asia/Kolkata
),结果输出9:12 PM。
$svnInfoTime = "2013-03-06T15:42:00.894378Z";
$unixTime = strtotime($svnInfoTime);
date_default_timezone_set('Asia/Kolkata');
$formattedDate = date('d F, Y, h:i A', $unixTime);
echo "SVN info time : " . $svnInfoTime . "<br>";
echo "unix time : " . $unixTime . "<br>";
echo "formatted date: " . $formattedDate . "<br>";
给:
SVN info time: 2013-03-06T15:42:00.894378Z
Unix时间:1362584520
格式化日期:06 March, 2013, 09:12 PM