我在尝试将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 pm?
谁能告诉我哪里出错?
答案 0 :(得分:2)
PHP的date()
功能在输出/格式化日期时会考虑您的时区设置。
检查您所在的时区,或将自定义时区设置传递给date
功能,以便 3:42 PM 输出。
P.S。它在codepad.viper-7.com
上工作正常在date()
来电之前传递不同的timezone(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信息时间:2013-03-06T15:42:00.894378Z
unix时间:1362584520
格式化日期:2013年3月6日,下午09:12