$dt = "Tue May 15 00:09:06 UTC+0100 2012"
MySQLデータベースサーバーのdatetime
フィールドに変換しようとしていますが、入力された値は常に6時間遅れています。
私のサーバーは米国のダラスにあり、英国にいます。
これを解決する方法はありますか?
使用する
date_default_timezone_set("America/New_York");
「America/New_York」をロンドンのコードに置き換えて、サーバーのタイムゾーンを適切なGMTタイムゾーンにシフトします。タイムゾーンのものを探す場合は、php.netで適切なコードを調べることができます。
日付を使用する各ページの上部に配置し、-> format('c')関数でphpDateTimeオブジェクトを使用するだけです。
アクセスできる場合は、php.iniファイルでタイムゾーン情報を設定することもできます。
-ヨルダン
より多くの情報(たとえば、いくつかのコード)がないと、デバッグは困難ですが、提供した変数を考えると、このスニペットは機能する可能性があります。
<?php
$dt_for_db = gmdate("Y-m-d H:i:s", strtotime($dt));
次に、データベースからプルするたびに、必ずすべての日付に(先頭にスペースがあります)追加してくださいGMT
。
<?php
$dt_from_db = $dt_from_db.' GMT';
基本的に、MySQLdatetime
列の日付にはタイムゾーン情報が格納されないため、使用しているタイムゾーン(UTC / GMT)を常に把握しておく必要があります。次に、データベースで関数を使用する前に、データベースから取得する各日付の末尾にそのタイムゾーンを追加しますdate
(date
関数はタイムゾーンが指定されていない日付の現地時間を想定しているため)。