PHP时区名称抵消

And*_*w M 21 php timezone offset

我如何将时区名称("亚洲/迪拜","欧洲/安道尔"等)转换为GMT抵消时间(或几秒,因为我可以从那里转换).

大多数人都要求相反,但我需要从GeoNames提供的时区名称中获得时区偏移量.

Cec*_*org 36

你可以使用以下

<?php

$timezone = 'Pacific/Nauru';
$time = new \DateTime('now', new DateTimeZone($timezone));
$timezoneOffset = $time->format('P');
?>
Run Code Online (Sandbox Code Playgroud)

  • 看看 http://www.php.net/manual/en/function.date.php 以秒为单位输出 (2认同)

sal*_*the 24

另一种选择是使用available DateTimeZone::getOffset()方法,该方法返回指定日期/时间的时区偏移量(以秒为单位).

$timezone = new DateTimeZone("Europe/Andorra");
$offset   = $timezone->getOffset(new DateTime);
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个答案,因为它给了我几秒钟的时间。与返回 `hh:mm` 格式的 `format('P')` 相反。 (2认同)

mop*_*922 10

我喜欢使用PHP Carbon:

$offset = Carbon::now('Europe/Andorra')->offsetHours;
Run Code Online (Sandbox Code Playgroud)