2

次の単純な PHP コードを用意します。

$day = '2013-05-04';
$disp_day = DateTime::createFromFormat('U', strtotime($day));
echo $day . " " . $disp_day->format('F j');

出力します

2013-05-04 May 3

でも$disp_date5月4日でしょ?

4

1 に答える 1

5

タイムゾーンの問題です。

strtotimeタイムゾーンに敏感なタイムスタンプを提供しますがcreateFromFormatUパラメーターを使用すると、タイムスタンプが GMT として解釈されます。

  • あなたのタイムゾーンはインド (GMT + 5.5) だと思います。したがって、インドではstrtotime("2013-05-04")のタイムスタンプが取得されます。ただし、5 時間半早い GMT では、時刻は です。2013-05-04 00:002013-05-03 18:30

  • 次に、このインドのタイムスタンプを GMTとして CreateFromFormat に渡し、シフトにつながります。

strtotimeここで使用する必要はまったくありません。

DateTime::createFromFormat('Y-m-d', $day);
于 2013-05-05T08:24:01.783 に答える