使用 ics 日期/时间格式在 php 中管理时区
好的,我正在使用 ICS 解析器实用程序来解析 Google 日历 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
那么,对于如何处理时区和夏令时有什么建议吗?
提前致谢
Ok, I'm using an ICS parser utility to parse google calendar ICS files. It works great, except google is feeding me the times of the events at UCT.. so I need to subtract 5 hours now, and 6 hours when daylight savings happens.
To get the start time I'm using:
$timestart = date("g:iA",strtotime(substr($event['DTSTART'], 9, -3)));
//$event['DTSTART'] feeds me back the date in ICS format: 20100406T200000Z
So any suggestions how to handle timezone and daylight savings time?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只是不要使用代码的 substr() 部分。 strtotime 能够解析 yyyymmddThhiissZ 格式的字符串并将 Z 解释为 timezone=utc。
例如
打印
编辑:或使用 DateTime 和 DateTimezone 类
(输出相同)
Just don't use the substr() part of the code. strtotime is able to parse the
yyyymmddThhiissZ
formatted string and interprets the Z as timezone=utc.e.g.
prints
edit: or use the DateTime and DateTimezone classes
(output is the same)
如果您已经设置了时区区域设置,您还可以使用 date("T") 它将返回当前时区。
因为我们处于夏令时,(在我的时区)它返回:
EDT
然后您可以在 IF 语句中使用它来调整时区调整。
If you've set your timezone locale, you can also then use date("T") which will return the current timezone.
Because we're in Daylight Saving Time, (in my timezone) it returns:
EDT
Then you could use that in an IF statement to adjust your timezone adjustment.