次の単純な 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_date
5月4日でしょ?
次の単純な 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_date
5月4日でしょ?
タイムゾーンの問題です。
strtotime
タイムゾーンに敏感なタイムスタンプを提供しますがcreateFromFormat
、U
パラメーターを使用すると、タイムスタンプが GMT として解釈されます。
あなたのタイムゾーンはインド (GMT + 5.5) だと思います。したがって、インドではstrtotime("2013-05-04")
のタイムスタンプが取得されます。ただし、5 時間半早い GMT では、時刻は です。2013-05-04 00:00
2013-05-03 18:30
次に、このインドのタイムスタンプを GMTとして CreateFromFormat に渡し、シフトにつながります。
strtotime
ここで使用する必要はまったくありません。
DateTime::createFromFormat('Y-m-d', $day);