この変換を行うと
$date = '09/20/2012 02:00';
echo $stamp = strtotime($date);
1348099200と表示されますが、Webサイトからオンラインで変換すると、2時間前の時間が表示されます.
どうすれば 2 時間を追加できますか?
この変換を行うと
$date = '09/20/2012 02:00';
echo $stamp = strtotime($date);
1348099200と表示されますが、Webサイトからオンラインで変換すると、2時間前の時間が表示されます.
どうすれば 2 時間を追加できますか?
date_default_timezone_set('Europe/London');
$date = new DateTime('09/20/2012 02:00');
$date->modify('+2 hour');
echo date_format($date, 'Y-m-d h:i');
strtotime
関数は常に、now()
timezone something という php.ini 設定に相対的です (実際には: date.timezone
、リンクについては以下を参照してください)。
したがって、サーバー (または Web サイト) が配置されているタイムゾーンを指定して構成する必要があります。この 2 時間を追加する必要はありません。この 2 時間は、夏時間が変更された場合にも変更される可能性があるため、アプリケーションにハード エンコードしないでください。
(仮定: ギリシャは現在 UTC+2 ですが、夏です)
デフォルトとしてどのタイムゾーンを使用していますか?また、オンラインツールはどのタイムゾーンを使用していますか?オンラインツールのTZはGMT(UTC)であり、あなたのTZはGMT + 2であると推測しています。これは、違いを説明するものです。
このタイプのあいまいさを回避するために、TZを明示的に設定するか、GMTベースのタイムスタンプを使用することをお勧めします。そうすれば、使用しているベースを常に確認でき、TZ変換は簡単です。
例えば:
$ts = new DateTime('09/20/2012 02:00', new DateTimeZone('America/Lima'));
$ts->setTimeZone(new DateTimeZone('Asia/Tokyo'));
echo $ts->format('Y-m-d H:i:sP') . "\n";
上記のコードは次のように出力します。
2012-09-20 16:00:00+09:00
HTH