28

次のような日付をどのように変換できますか:(タイムゾーンにあります)をタイムゾーン2012-07-16 01:00:00 +00に変換するにはどうすればよいですか? 夏時間が正しく処理されるようにしますか?UTC +00:00UTC +04:00

4

4 に答える 4

56

とを使用DateTimeDateTimeZoneます。

$date = new DateTime('2012-07-16 01:00:00 +00');
$date->setTimezone(new DateTimeZone('Europe/Moscow')); // +04

echo $date->format('Y-m-d H:i:s'); // 2012-07-15 05:00:00 
于 2012-08-09T12:54:40.987 に答える
0

解決策を支援するには、文字列の最後の部分 (オフセット部分) を取得し、単純な検索に対して検索する必要があります。正規表現またはsubstr()(おそらく)を使用して、最も悪い部分を取得できます。次に、+ または - の値がある場合は、PHP の可能なタイムゾーンで使用できる可能なタイムゾーンに対して最大 24 のルックアップを使用します。オフセットが同じ場合、実際の国/場所が何であるかは誰が気にしますか?

date_default_timezone_setを使用して正しいものを適用します。

于 2012-08-09T12:55:01.250 に答える
-2

GMT 時間も使用して、後で必要に応じて変換することもできます

<?php
echo gmdate("M d Y H:i:s", mktime(0, 0, 0, 1, 1, 1998));
?>

GMT は、世界中で共通のグリニッジ標準時を指します。

于 2014-08-22T09:41:07.560 に答える