在PHP中,是否可以获取给定位置的时区偏移量?例如,当给定位置为“悉尼/澳大利亚”时,获取时区偏移量为“+1100”。如果此函数考虑夏令时(即它知道夏令时并根据情况调整偏移量),则会有额外奖励。
在PHP中,是否可以获取给定位置的时区偏移量?例如,当给定位置为“悉尼/澳大利亚”时,获取时区偏移量为“+1100”。如果此函数考虑夏令时(即它知道夏令时并根据情况调整偏移量),则会有额外奖励。
<?php
$timezone = new DateTimeZone("Australia/Sydney");
$offset = $timezone->getOffset(new DateTime("now")); // Offset in seconds
echo ($offset < 0 ? '-' : '+').round($offset/3600).'00'; // prints "+1100"
?>
$date = new DateTime($value);
$date->setTimezone(new DateTimeZone('Europe/Berlin'));
echo $date->format('Y-m-d H:i:s');
不确定为什么需要“+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