【发布时间】:2019-08-21 11:57:00
【问题描述】:
我正在为 Google 日历、Apple 日历和 Yahoo 日历创建日历活动。该事件特定于每个客户,并且根据他们的地址,它将在特定时间发生,因此我们不需要任何时区转换。我创建的.ics 文件在 Google 和 Apple 日历中正确显示时间,但在 Yahoo 日历中显示时间不正确。
所以我创建了一个带有DTSTART:20190415T154500 和DTEND:20190415T16450(as specified 本地时间日期)的 ics 文件,没有指定时区。这适用于苹果和谷歌日历,但在雅虎的情况下,它显示Mon, 15 Apr, 11:45 AM - 12:45 PM,即使我的雅虎日历时区与我的谷歌日历相同。以下是我的.ics 文件:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ZContent.net//Zap Calendar 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
SUMMARY:Specialist arrival window
UID:d5497571-a7fe-49e2-b0a5-d619e7f5c73a
DTSTART:20190415T154500
DTEND:20190415T164500
LOCATION:101 XYZ BLDG 1\, SAN FRANCISCO\,CA\,94098
DESCRIPTION:Thanks for choosing our service!
X-ALT-DESC;FMTTYPE=text/html:<html><body>Thanks for choosing our service.<br>
<br> Have to reschedule? sigin to change your appointment day and time. </body>
</html>
END:VEVENT
END:VCALENDAR
期望无论时区如何,用户都应该得到 4 月 15 日星期一 3:45 – 4:45 pm 的时间。任何帮助将不胜感激。
【问题讨论】:
-
以防万一 - 尝试在 ics 验证器中验证 ics 文件。上面可能是剪切和粘贴错误,但 DTSTART 不在新行上,它看起来不像 X-ALT DESC 正确折叠(应该是 CR:F 然后是空格?)。
-
另外我知道你说你理解并且故意使用浮动日期但考虑这些是实际约会,而不是提醒(例如吃药)并且这个人正在旅行,然后他们的时区可能会发生变化,他们可能更愿意让约会正确反映他们在约会时要去的任何地方。这可能会解决您的问题吗?
-
@anmari 这是一种将发送给客户的预约时间,并且会在他们的地址,所以它必须是一个固定的时间。你也是对的,这里是复制粘贴问题,关键是苹果、outlook 和谷歌正确地将这些视为“浮动”时间,雅虎完全忽略了它。
-
如果它是 yahoo 错误或不受支持的功能,您可能必须绕过它。作为调试 - 查看它是文件还是雅虎不支持尝试以 UTC 发布。听起来您发布浮动日期时间是为了方便自己,并且可以使用约会所在地址的时区来达到相同的效果。因此,如果雅虎不支持浮动(我不知道它是否支持),那么只需转换为 UTC 时间并发出。
-
@anmari ,实际上有多个可用于预约的时段,无论客户在哪个时区,我们都需要为每个客户安排相同的预约,所以我们真的不能使用客户的时区,这就是我们需要浮动时间的原因..
标签: javascript ajax calendar timezone icalendar