0

日付/時刻を含む文字列があり、現在オーストラリア/シドニーのタイムゾーンにあることを知っています。

ここで、GMT 時間に変更する必要があります。

私はこれを試しましたが、日付を変更していません:

$dateString = '2012-06-29 11:09:12'; // this is in Australia/Sydney timezone
$gmtDate = gmdate('Y-m-d H:i:s', strtotime($dateString));
print_r($gmtDate); // output is 2012-06-29 11:09:12

gmt からどうにかしてオフセットを差し引くにはどうすればよいですか。申し訳ありませんが、少し混乱しています。

4

3 に答える 3

4

おそらくあなたのウェブサーバーはオーストラリア/シドニーのタイムゾーンに設定されていませんか? 次の回答が役に立ちます: PHP の日付形式を GMT に、またはその逆に変換する方法は?

できることは次のとおりです。

$melbourne = new DateTimeZone('Australia/Melbourne');
$gmt = new DateTimeZone('GMT');

$date = new DateTime('2011-12-25 00:00:00', $melbourne);
$date->setTimezone($gmt);
echo $date->format('Y-m-d H:i:s');
// Output: 2011-12-24 13:00:00
// At midnight on Christmas eve in Melbourne it will be 1pm on Christmas Eve GMT.

echo '<br/>';

// Convert it back to Australia/Melbourne
$date->setTimezone($melbourne);
echo $date->format('Y-m-d H:i:s');
于 2012-06-30T07:57:01.237 に答える
3

スクリプトで ini_set() を使用して、現在のタイムゾーンをロサンゼルスで使用されているタイムゾーンなどに設定するには、次のようにします。

ini_set('date.timezone', 'America/Los_Angeles');

日付と時刻の関数に対する後続のすべての要求では、アメリカ/ロサンゼルスがタイムゾーンとして使用されます。

スクリプトでこれを行う必要がある場合、たとえば、使用している Web サーバーが、スクリプトで使用したい日時とは異なるタイムゾーンにある場合は、呼び出しが開始時に行われるようにする必要があります。スクリプトを削除します (または、可能であれば、設定を .htaccess ファイルに移動します)。

于 2012-06-30T07:57:33.047 に答える
1

PHP サポートのタイムゾーン、こちらをご確認ください:

date_default_timezone_set 関数 サポートされているタイムゾーンのリスト

元:

date_default_timezone_set('Australia/Sydney');
echo date('Y-m-d H:i:s') . '<br/>';

date_default_timezone_set('Asia/Jakarta');
echo date('Y-m-d H:i:s') . "<br/>";
于 2012-06-30T08:20:27.847 に答える