0

$dt = "Tue May 15 00:09:06 UTC+0100 2012"MySQLデータベースサーバーのdatetimeフィールドに変換しようとしていますが、入力された値は常に6時間遅れています。

私のサーバーは米国のダラスにあり、英国にいます。

これを解決する方法はありますか?

4

2 に答える 2

1

使用する

 date_default_timezone_set("America/New_York");

「America/New_York」をロンドンのコードに置き換えて、サーバーのタイムゾーンを適切なGMTタイムゾーンにシフトします。タイムゾーンのものを探す場合は、php.netで適切なコードを調べることができます。

日付を使用する各ページの上部に配置し、-> format('c')関数でphpDateTimeオブジェクトを使用するだけです。

アクセスできる場合は、php.iniファイルでタイムゾーン情報を設定することもできます。

-ヨルダン

于 2012-05-01T17:22:47.993 に答える
0

より多くの情報(たとえば、いくつかのコード)がないと、デバッグは困難です、提供した変数を考えると、このスニペットは機能する可能性があります。

<?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)を常に把握しておく必要があります。次に、データベースで関数を使用する前に、データベースから取得する各日付の末尾にそのタイムゾーンを追加しますdatedate関数はタイムゾーンが指定されていない日付の現地時間を想定しているため)。

于 2012-05-01T17:17:10.657 に答える