Timezone conversion in php

后端 未结 9 1887
我寻月下人不归
我寻月下人不归 2020-11-22 04:19

Can anyone suggest an easy method to convert date and time to different timezones in php?

9条回答
  •  暖寄归人
    2020-11-22 04:32

    None of these answers worked for me (I skipped trying code that was overly bulky in size). I also think it's weird to change the default timezone just for a single conversion.

    Here is my solution:

    function changeTimeZone($dateString, $timeZoneSource = null, $timeZoneTarget = null)
    {
      if (empty($timeZoneSource)) {
        $timeZoneSource = date_default_timezone_get();
      }
      if (empty($timeZoneTarget)) {
        $timeZoneTarget = date_default_timezone_get();
      }
    
      $dt = new DateTime($dateString, new DateTimeZone($timeZoneSource));
      $dt->setTimezone(new DateTimeZone($timeZoneTarget));
    
      return $dt->format("Y-m-d H:i:s");
    }
    

    So, to convert to the server default, you would just pass one timezone:

    changeTimeZone("2016-10-24 16:28", "Asia/Tokyo");
    

    To convert from the server default to the user, you would leave the 2nd parameter null or blank:

    changeTimeZone("2016-10-24 16:28", "", "Asia/Tokyo");
    

    And to switch between 2 timezones unrelated to the default, you would provide 2 timezones:

    changeTimeZone("2016-10-24 16:28", "America/New_York", "Asia/Tokyo");
    

提交回复
热议问题