我的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
任何人都可以帮我找一个解决方案.....
答案 0 :(得分:0)
解决这个问题的好方法可能是:
Unix时间(也称为POSIX时间或纪元时间)是一个用于描述时间瞬间的系统,定义为自00:00:00协调世界时(自从协调世界时)以来经过的秒数 UTC),1970年1月1日,星期四
您从此TZID时区获得的时间戳将采用以下格式: 1459408447
对于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)');