gpt4 book ai didi

php - 使用 ics 日期/时间格式在 php 中管理时区

转载 作者:可可西里 更新时间:2023-11-01 00:17:49 26 4
gpt4 key购买 nike

好的,我正在使用 ICS 解析器实用程序来解析谷歌日历 ICS 文件。它工作得很好,除了谷歌向我提供 UCT 事件的时间。所以我现在需要减去 5 小时,夏令时减去 6 小时。

要获取我正在使用的开始时间:

$timestart = date("g:iA",strtotime(substr($event['DTSTART'], 9, -3)));
//$event['DTSTART'] feeds me back the date in ICS format: 20100406T200000Z

那么对于如何处理时区和夏令时有什么建议吗?

提前致谢

最佳答案

只是不要使用代码的 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";

(输出相同)

关于php - 使用 ics 日期/时间格式在 php 中管理时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com