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

php日期(格式化)函数输出奇怪/不正确,php,datetime,Php,Datetime,我在尝试将Unix时间(取自SVN Info命令生成的XML文件)转换为格式化的日期/时间时遇到问题 $svnInfoTime是正确的,生成的$unixTime反映了这一点,尽管$formattedDate似乎有点不正确 我在很多(但不是所有)案例中都看到过这种情况。例如: <?php $svnInfoTime = "2013-03-06T15:42:00.894378Z"; $unixTime = strtotime($svnInfoTime); $format

我在尝试将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>";
>
当Unix时间为下午3:42时,为什么格式化日期显示为下午4:42

有人能告诉我哪里出错了吗?

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

检查您所在的时区,或将自定义时区设置传递到
date
函数,以获得下午3:42的输出

顺便说一句,它在飞机上很好用


编辑 在调用
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>";
$svnInfoTime=“2013-03-06T15:42:00.894378Z”;
$unixTime=strotime($svnInfoTime);
日期默认时区设置(“亚洲/加尔各答”);
$formattedDate=日期('df,Y,h:ia',$unixTime);
回显“SVN信息时间:”$斯文尼福泰姆。“
”; 回显“unix时间:”$unixTime。“
”; echo“格式化日期:”$格式化日期。“
”;
给出:

SVN信息时间:2013-03-06T15:42:00.894378Z
unix时间:1362584520
格式化日期:2013年3月6日晚上9:12


学习使用时区为Awa的DateTime对象,其他解决方法是设置默认时区:
date\u default\u timezone\u set('UTC')。问题在于您忘了准确定义“时间”。谢谢,使用
date\u default\u timezone\u set('GMT')解决了这个问题日期
函数之前执行code>。
$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>";