2016-04-02 85 views
0

我有一個ics內容的問題,其中Vtimezone,TZID顯示爲非標準時區並需要將其轉換爲標準one.PHP DateTimeZone()函數不轉換/處理非標準時區。將非標準時區的Php轉換爲標準

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 

誰能幫我找到一個解決方案.....

回答

0

一個好辦法解決這個可能是:

  1. 隱蔽的Vtimezone TZID到Unix時間戳

Unix時間(也稱爲POSIX時間或Epoch時間)是用於描述時間瞬間的系統,定義爲從00:00:00開始經過的秒數協調世界時(UTC),星期四,1 1970年1月

你從這個TZID時區中得到的時間戳,將在格式:

  • 轉換該時間戳您需要的時區,爲美國/丹佛做類似於下面的例子:

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

    的方法將也從ICS的內容得到時間戳整數出來。 – Kruser