php date(格式化)函数输出奇怪/不正确



我在尝试将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

相关内容

  • 没有找到相关文章

最新更新