我有一些php代码可以动态生成一个.ics文件供下载。我传递的开始日期值为 08/01/2019 ,并且成功将其导入ical / google日历后,尽管有正确的时间戳记,但仍会关闭一天。我不确定我在这里缺少什么。
我尝试将日期重新格式化为其他日期字符串,而不是将其转换为ical所需的格式,并导致1969年1月1日。我正在使用WordPress的date_i18n()函数将日期格式化为期望值。 / p>
$dateVal; // contains 08/01/2019
$dtstart = date_i18n("Ymd\THis\Z", strtotime( $dateVal) );
// output: 20190801T000000Z
当事件进入日历时,它将显示我的日期为2019年7月31日下午6点,而不是2019年8月1日的预期值
有什么想法可以调试吗?
答案 0 :(得分:1)
我认为正在发生的事情是这样的:
您的事件应该在您所在时区的8/01/2019进行,基于明显的偏移量似乎是UTC + 6。
格式字符串中的\Z
表示该事件是UTC的8/1/2019,因此当您在日历上看到该事件时,它会调整为您的时区,因此减去了8小时
尝试不使用\Z
,我认为它应该使用您当地的时区。
或将时间转换为UTC。
$date = new DateTime($dateVal);
$date->setTimezone(new DateTimeZone('UTC'));
$dtstart = $date->format('Ymd\THis\Z');