date_default_timezone_set
すべての時間関連関数にシフトを認識させるために使用できます。UTC ギャップは n と n+1 の間で 1 時間であるため、最初に行うことは、これらの分を時間に変換することです。
$hours = $minutes / 60;
また、最初に分の値を確認することをお勧めします。
if($minutes % 60 == 0) // We're good.
ここで、UTC オフセットをタイムゾーンに変換する場合は、関数を作成できます。
<?php
function offsetToTimezone($offset){
$timezones = array(
"-12" => "Pacific/Kwajalein",
"-11" => "Pacific/Samoa",
"-10" => "Pacific/Honolulu",
"-9" => "America/Juneau",
"-8" => "America/Los_Angeles",
"-7" => "America/Denver",
"-6" => "America/Mexico_City",
"-5" => "America/New_York",
"-4" => "America/Caracas",
"-3.5" => "America/St_Johns",
"-3" => "America/Argentina/Buenos_Aires",
"-2" => "Atlantic/Azores",
"-1" => "Atlantic/Azores",
"0" => "Europe/London",
"1" => "Europe/Paris",
"2" => "Europe/Helsinki",
"3" => "Europe/Moscow",
"3.5" => "Asia/Tehran",
"4" => "Asia/Baku",
"4.5" => "Asia/Kabul",
"5" => "Asia/Karachi",
"5.5" => "Asia/Calcutta",
"6" => "Asia/Colombo",
"7" => "Asia/Bangkok",
"8" => "Asia/Singapore",
"9" => "Asia/Tokyo",
"9.5" => "Australia/Darwin",
"10" => "Pacific/Guam",
"11" => "Asia/Magadan",
"12" => "Asia/Kamchatka"
);
return $timezones[$offset];
}
?>
...そして変換に if を使用します:
date_default_timezone_set(offsetToTimezone($hours));
ところで、この回答をご覧になることをお勧めします。これにより、の作業をよりエレガントに実現できoffsetToTimezone
ます。
スクリプトが正しいタイムゾーンで構成されている場合は、タイムスタンプを要求するだけです:
$timestamp = mktime(0, 0, 0);
タイムゾーンをデフォルトにリセットする必要がある場合はdate_default_timezone_get
、保存する必要がある場合があります。
$timezone = date_default_timezone_get();
// Change to another timezone based on your offset.
// Get your timestamp.
date_default_timezone_set($timezone);