【问题标题】:PHP Timezone Name to OffsetPHP 时区名称到偏移量
【发布时间】:2011-06-11 07:56:38
【问题描述】:

我将如何将时区名称(“亚洲/迪拜”、“欧洲/安道尔”等)转换为以小时为单位的 GMT 偏移量(甚至秒,因为我可以从那里进行转换)。

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

【问题讨论】:

  • 这并不能直接回答您的问题,但可能会解决您的问题。看起来您可以直接查询 GeoNames 的偏移量,如下所示:api.geonames.org/timezoneJSON?lat=47.01&lng=10.2
  • 是的,我实际上使用 GeoNames 作为主要。主要问题是它们目前超载,所以我试图在它们超载时进行备份。
  • UTC Offset in PHP的可能重复

标签: php timezone offset


【解决方案1】:

我喜欢使用PHP Carbon

$offset = Carbon::now('Europe/Andorra')->offsetHours;

【讨论】:

    【解决方案2】:

    你可以使用以下

    <?php
    
    $timezone = 'Pacific/Nauru';
    $time = new \DateTime('now', new DateTimeZone($timezone));
    $timezoneOffset = $time->format('P');
    ?>
    

    【讨论】:

    • 看看php.net/manual/en/function.date.php 以秒为单位输出
    • 在将“new dateTime”更改为“new DateTime”和将“time()”更改为“'now'”时完美运行。谢谢!
    • 或者只是做$time-&gt;getOffset()以整数秒输出
    【解决方案3】:

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

    $timezone = new DateTimeZone("Europe/Andorra");
    $offset   = $timezone->getOffset(new DateTime);
    

    【讨论】:

    • 我更喜欢这个答案,因为它给了我几秒钟的时间。与返回 hh:mm 格式的 format('P') 不同。
    猜你喜欢
    • 2018-10-20
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2011-02-28
    • 2020-04-20
    • 2014-02-15
    • 2021-04-11
    相关资源
    最近更新 更多