在 PHP 中是否可以获取给定位置的时区偏移量?例如,当给定位置“悉尼/澳大利亚”以获得时区偏移为“+1100”时。这个功能的好处是记住夏令时(即它知道夏令时并相应地调整偏移量)。
问问题
10739 次
3 回答
19
您可以使用DateTimeZone类。
<?php
$timezone = new DateTimeZone("Australia/Sydney");
$offset = $timezone->getOffset(new DateTime("now")); // Offset in seconds
echo ($offset < 0 ? '-' : '+').round($offset/3600).'00'; // prints "+1100"
?>
于 2010-10-11T23:09:16.187 回答
7
要显示本地日期/时间,您可以使用以下内容,其中“欧洲/柏林”将替换为用户的时区。
$date = new DateTime($value);
$date->setTimezone(new DateTimeZone('Europe/Berlin'));
echo $date->format('Y-m-d H:i:s');
于 2010-10-12T10:00:14.860 回答
4
不知道为什么你需要“+1100”(而不是十进制表示),但你可以使用这个:
$dt = new DateTime(null, new DateTimeZone('Australia/Sydney'));
$offset = $dt->getOffset()/60/60; // 11
$hours = intval($offset);
$minutes = str_pad((string)($offset - $hours) * 60, 2, '0', STR_PAD_RIGHT);
echo $hours.$minutes; // 1100
替换null
为'2010-10-01'
,你会得到1000
于 2010-10-11T23:04:50.130 回答