您可以使用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);