我正在构建一个简单的.ics文件,一切看起来都很好。但是,无论我使用.ics做什么,当我在手机上打开它时,它都会显示错误的开始时间和结束时间(+3小时)。
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
X-WR-TIMEZONE:Europe/Sofia
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Europe/Sofia
TZOFFSETFROM:+0000
TZOFFSETTO:-0300
TZNAME:CET
END:VTIMEZONE
BEGIN:VEVENT
LOCATION:Some location
DESCRIPTION:Testing Description
DTSTART:20180825T120000Z
DTEND:20180825T141000Z
SUMMARY:This is a short summary
URL;VALUE=URI:www.someurl
DTSTAMP:20180825T155441Z
UID:5b8151913501c
END:VEVENT
END:VCALENDAR
因此,与其显示开始时间12点(20180825T120000Z),而是显示15:00 奇怪的是,实际上无论我使用什么TZID,都没有任何变化。偏移也不起作用。
任何想法可能是什么问题?
答案 0 :(得分:2)
它在做正确的事情。请参考RFC5545规范。 https://tools.ietf.org/html/rfc5545#section-3.6.5。 VTIMEZONE只是提供了时区的定义,即基本偏移量和任何夏令时更改等。我怀疑许多应用程序可能会使用它们自己的定义,并且/或者如果正确,定义应该相同。
因此,接下来我们看您如何选择代表日期,即:https://tools.ietf.org/html/rfc5545#section-3.3.5的表格#2,日期和UTC时间。然后,日历应用程序将根据您的应用程序设置的时区在DTSTART中调整UTC时间。您的应用似乎设置为与UTC偏移3小时的时区。
如果您确实希望日期是您所在时区的中午12点,那么您可以选择: