使用php中的时区偏移将GMT时间转换为本地时间

时间:2014-02-10 06:18:48

标签: php timestamp-with-timezone

我需要根据当前时区显示用户的活动日期。 我的方法 -

  1. 从javascript获取时区偏移并将其存储到用户的个人资料表。
  2. 当用户登录时,获取时区偏移。
  3. 当前日期与时区偏移正常 -
  4.   

    $ offsetDiff = $ _SESSION ['TimeZone'] * 60;

         

    $ UserDateTime = time()+ $ offsetDiff;

         

    $ currentDate = date('Y-m-d',$ UserDateTime);

    1. 今天以外的其他日期工作不正常 -
    2.   

      $ offsetDiff = $ _SESSION ['TimeZone'] * 60;

           

      $ UserDateTime ='2014-02-10 08:58:00'; + $ offsetDiff;

           

      $ monthUser = date('Y-m-d',$ UserDateTime);

      任何人都可以告诉我如何根据时区偏移显示正确的日期?

1 个答案:

答案 0 :(得分:1)

您可以将特定偏移量转换为DateTimeZone:

$offset = '-0500';
$isDST = 1; // Daylight Saving 1 - on, 0 - off
$timezoneName = timezone_name_from_abbr('', intval($offset, 10) * 36, $isDST);
$timezone = new DateTimeZone($timezoneName);

然后你可以在DateTime构造函数中使用它,例如

$datetime = new DateTime('2012-04-21 01:13:30', $timezone);

或使用setter:

$datetime->setTimezone($timezone);

在后一种情况下,如果使用不同的时区构建$ datetime,则日期/时间将转换为指定的时区。