Php-将非标准时区转换为标准时区

时间:2016-04-02 09:14:48

标签: php timezone

我的ics内容存在问题,其中Vtimezone,TZID显示为非标准时区,需要将其转换为标准时区.PHP DateTimeZone()函数不转换/处理非标准时区。

ICS内容如下

BEGIN:VCALENDAR
PRODID:
VERSION:2.0
METHOD:REQUEST

BEGIN:VTIMEZONE
TZID:Eastern
BEGIN:STANDARD
DTSTART:20001105T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:Standard Time
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20000312T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:Daylight Savings Time
END:DAYLIGHT
END:VTIMEZONE

任何人都可以帮我找一个解决方案.....

1 个答案:

答案 0 :(得分:0)

解决这个问题的好方法可能是:

  1. 将您的Vtimezone TZID转换为Unix时间戳
  2.   

    Unix时间(也称为POSIX时间或纪元时间)是一个用于描述时间瞬间的系统,定义为自00:00:00协调世界时(自从协调世界时)以来经过的秒数 UTC),1970年1月1日,星期四

    您从此TZID时区获得的时间戳将采用以下格式: 1459408447

    1. 对于America / Denver,将该时间戳转换为您需要的时区,执行类似于以下示例的操作:

      $timezone = new DateTimeZone('America/Denver');
      $timestamp = 1459408447;
      
      $dt = new DateTime( $timezone );    
      $dt->setTimestamp($timestamp);
      
      echo $dt->format('Y-m-d H:i:s (e)');