只要不使用代碼的SUBSTR()的一部分。 strtotime能夠解析格式化爲yyyymmddThhiissZ
的字符串,並將Z解釋爲timezone = utc。
例如
$event = array('DTSTART'=>'20100406T200000Z');
$ts = strtotime($event['DTSTART']);
date_default_timezone_set('Europe/Berlin');
echo date(DateTime::RFC1123, $ts), "\n";
date_default_timezone_set('America/New_York');
echo date(DateTime::RFC1123, $ts), "\n";
打印
Tue, 06 Apr 2010 22:00:00 +0200
Tue, 06 Apr 2010 16:00:00 -0400
編輯:或使用DateTime和DateTimezone類
$event = array('DTSTART'=>'20100406T200000Z');
$dt = new DateTime($event['DTSTART']);
$dt->setTimeZone(new DateTimezone('Europe/Berlin'));
echo $dt->format(DateTime::RFC1123), "\n";
$dt->setTimeZone(new DateTimezone('America/New_York'));
echo $dt->format(DateTime::RFC1123), "\n";
(輸出是一樣的)
使用日期(日期時間:: RFC1123,$ TS)它打印:週五,1970年8月21日10時26分52秒-0500對於 「20100406T200000Z」 – John 2010-04-09 17:04:00
事實上,對於使用 「20100406T200000Z」 格式的所有日期,它是輸出1970年8月21日星期五的唯一變化就是時間。這就是爲什麼我去了substr方法,所以我可以得到正確的時間。這是我的php ini文件的問題嗎?這在Windows Server 2003上運行。 – John 2010-04-09 17:15:01
我已經用php 5.3.2/winxp測試過它。你使用哪個版本? – VolkerK 2010-04-09 17:23:28