Get timezone offset for a given location

前端 未结 3 2108
南旧
南旧 2021-02-09 08:13

Is it possible in PHP to get the timezone offset for a given location? E.g. when given the location \"Sydney/Australia\" to get the timezone offset as \"+1100\". Bonus would be

相关标签:
3条回答
  • 2021-02-09 08:44

    To display a local date/time you can use the following, where 'Europe/Berlin' would be replaced with the user's timezone.

    $date = new DateTime($value);
    $date->setTimezone(new DateTimeZone('Europe/Berlin'));
    echo $date->format('Y-m-d H:i:s');
    
    0 讨论(0)
  • 2021-02-09 08:49

    Not sure why you need "+1100" (rather than a decimal representation) but you can use this:

    $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
    

    Replace null with '2010-10-01' and you'll get 1000

    0 讨论(0)
  • 2021-02-09 08:52

    You can use the DateTimeZone class.

    <?php
    $timezone = new DateTimeZone("Australia/Sydney");
    $offset = $timezone->getOffset(new DateTime("now")); // Offset in seconds
    echo ($offset < 0 ? '-' : '+').round($offset/3600).'00'; // prints "+1100"
    ?>
    
    0 讨论(0)
提交回复
热议问题