試試這個代碼,讓我知道它的工作?
function ConvertOneTimezoneToAnotherTimezone($time,$currentTimezone,$timezoneRequired,$considerDST=true) {
// save current timezone
$backup_tz = date_default_timezone_get();
date_default_timezone_set($currentTimezone);
$t = strtotime($time);
date_default_timezone_set($timezoneRequired);
if (!$considerDST && (date('I', $t) == 1)) {
if ($timezoneRequired == 'Australia/Lord_Howe') $dst='-30 minutes';
else $dst = "-1 hour";
$t = strtotime($dst, $t);
}
// restore old timezone
$res = date('Y-m-d H:i:s', $t);
date_default_timezone_set($backup_tz);
return $res;
}
$mytime = '2011-03-29 12:40:00.000';
$myzone = 'UTC';
echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, 'Australia/Adelaide', true) . " (Adelaide DST=Yes)<br>";
echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, 'Australia/Adelaide', false) . " (Adelaide DST=No)";
其他參數$ considerDST是布爾那麼傳遞true(或跳過此參數,其默認),如果你想DST或假,如果你不這樣做。
如果您想將時間轉換爲UTC,則需要傳入與該函數的輸入參數相同的時間。
你不能這樣做!
$mytime = '2011-03-30 12:52:00.000';
$myzone = 'Europe/Belgrade';
...
$mytime = '2011-03-30 12:52:00.000';
$myzone = 'America/New_York';
,並期望同UTC,因爲它鼻涕同一時間......當它在貝爾格萊德,其在紐約06:52 12:52,所以......
2011-03-20 12:52:00.000 [Europe/Belgrade]
2011-03-30 06:52:00.000 [America/NewYork]
2011-03-30 16:22:00.000 [Asia/Calcutta] or [Asia/Kolkata]
2011-03-30 19:52:00.000 [Asia/Pyongyang]
etc...
具有相同的UTC時間2011-03-20 10:52:00.000
從我的代碼...
$mytime = '2011-03-30 21:00:00.000';
$myzone = 'Australia/Melbourne';
echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, 'UTC', true) . " (Melbourne->UTC DST=Yes)<br>";
echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, 'UTC', false) . " (Melbourne->UTC DST=No)<br><br>";
$mytime = '2011-03-30 15:30:00.000';
$myzone = 'Asia/Kolkata';
echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, 'UTC', true) . " (India->UTC DST=Yes)<br>";
echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, 'UTC', false) . " (India->UTC DST=No)<br>";
那就是UTC 10:00 ......我不明白!告訴我你的代碼又在做什麼?
OUTPUT:
2011-03-30 10:00:00 (Melbourne->UTC DST=Yes)
2011-03-30 10:00:00 (Melbourne->UTC DST=No)
2011-03-30 10:00:00 (India->UTC DST=Yes)
2011-03-30 10:00:00 (India->UTC DST=No)
請不要有 「對話」 通過發佈大量 「答案」 的。改用編輯鏈接來改善你的回答。 – 2011-03-31 06:26:04