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

Unix時間が午後3時42分であるのに、フォーマットされた日付が午後4時42分を表示するのはなぜですか?

誰かが私がどこで間違っているのか教えてもらえますか?

4

1 に答える 1

3

PHP のdate()関数は、日付を出力/フォーマットするときにタイムゾーン設定を考慮します。

現在地のタイムゾーンを確認するか、カスタムのタイムゾーン設定をdate関数に渡して、出力を3:42 PMとして取得します。

PS codepad.viper-7.comで正常に動作します


編集

呼び出しの前に別​​のtimezone( Asia/Kolkata)を渡すと、出力は9:12 PMになります。date()

$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 PM

于 2013-03-07T10:15:18.560 に答える