2

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

谁能告诉我哪里出错了?

4

1 回答 1

3

PHP 的date()函数在输出/格式化日期时会考虑您的时区设置。

检查您所在的时区,或将您的自定义时区设置传递给date函数以获取3:42 PM的输出。

PS 它在codepad.viper-7.com上运行良好


编辑

在调用之前传递不同的timezone( Asia/Kolkata)date()时,会产生输出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 日晚上 9:12

于 2013-03-07T10:15:18.560 回答