2

gmdate PHP 関数を使用して現在の日付をデータベースに挿入していますが、GMT 時間が表示されています。タイムゾーン +3 に変更できますか?

これがコードです

$sql = "INSERT INTO Students
VALUES ('','" . $info[$i]['firstname'] . "', '" . $info[$i]['lastname'] . "', 
        '" . $info[$i]['sex'] . "', '" . $info[$i]['major'] . "', 
        '" . $info[$i]['favorite'] . "', '" . $info[$i]['GPA'] . "',
        '". gmdate('m/d/Y g:i:s A') . "')" ;
4

3 に答える 3

6

「+3」は「タイムゾーン」ではありません。これは UTC/GMT からのオフセットであり、夏時間の設定に基づいて年間を通じて変化する可能性があります。タイムゾーンは「ヨーロッパ/ベルリン」や「アジア/東京」のようなものです。

実際のタイムゾーンを決定したら:

date_default_timezone_set('Europe/Berlin');
echo date('m/d/Y g:i:s A');

また

$date = new DateTime('now', new DateTimeZone('Europe/Berlin'));
echo $date->format('m/d/Y g:i:s A');

作業する必要があるのが「+3」だけの場合、a) めちゃくちゃで、b) 任意のタイムスタンプに単に「3 時間」を追加できます。

date_default_timezone_set('UTC');

echo date('m/d/Y g:i:s A', strtotime("$offset hours"));

echo date('m/d/Y g:i:s A', time() + ($offset * 60 * 60));

$date = new DateTime;
$date->modify("$offset hours");
echo $date->format('m/d/Y g:i:s A');
于 2013-06-09T07:56:18.903 に答える
4

date()いいえ、代わりに使用する必要があります。または、DateTimeオブジェクトを使用してタイムゾーンをより詳細に制御します。

ただし、GMT の日付と時刻を保存し、データを表示するときに独自のタイムゾーンに戻すことを強くお勧めします。

$datetime = new DateTime('now');
$dateTime->setTimeZone(new DateTimeZone('Europe/London')); // Change to london time.
echo $dateTime->format('m/d/Y g:i:s A');

オフセットではなく、常にタイムゾーン名を使用する必要があります。+3 のオフセットについて話していますが、1 年のうち 6 か月は UTC+3:00 にしか住んでいないと確信しています。

于 2013-06-09T00:08:12.310 に答える