基于事件或用户当前时区的事件时间?

Posted

技术标签:

【中文标题】基于事件或用户当前时区的事件时间?【英文标题】:Time of the event based on event or user's current timezone? 【发布时间】:2016-04-12 14:04:34 【问题描述】:

我正在开发一个日历应用程序,用户可以在其中选择是要根据当前时区自动移动事件时间还是将其设置为不变 基于开关按钮。我使用 Eventkit 来存储事件,也使用 UILocalnotification 来存储事件通知

例如。

场景 1: 用户在印度将晚餐后散步的时间设置为每天晚上 9 点(IST)。他前往美国,但由于时区更改,事件通知发生在早上 8.30(太平洋夏令时间)。我想要的是事件应该美国也于晚上 9 点(太平洋夏令时间)举行。

场景 2: 用户在印度,他在星期六晚上 10 点(IST)与印度人安排了一些在线会议。他前往美国,时区已更改,但会议应在印度晚上 10 点(IST)后于上午 9.30(太平洋夏令时间)举行

事件和通知同步工作,因此需要同时处理 ekevent 和 uilocalnotification 的时区

希望有人能把我从这个问题中解救出来。谢谢

【问题讨论】:

【参考方案1】:

UILocationNotification 允许您设置fireDatetimeZone。如果您将timeZone 设置为nil,它将在指定时间触发,并在您旅行时调整时区(您的第二种情况,即固定时间点)。如果您将 timeZone 设置为有效时区,它将在任何时区(您的第一种情况,即可变时间点)在那个时候触发。

有一个很好的解释here

【讨论】:

哦,这适用于 uilocalnotification...我该如何处理 ekevent?? 如果您使用的是EKEventEKCalendarItem,那么将timeZone 设置为nil 意味着它是一个“浮动”事件,所以它会在给定的时间发生而不管时区(例如“中午午餐”)。设置timeZone 会将其置于固定时间点,如果用户移动到不同的时区,该时间点会进行调整。

以上是关于基于事件或用户当前时区的事件时间?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 处理夏令时的时区

如何使用 Fabric 的 Answers 或 Google Analytics 获取当前 Android 用户的事件计数?

如何按日期分组,考虑时区和 DST?

DST 在 GCal 事件中导致 +1 小时时差

在当前事件中初始化记录默认值

用户玩游戏时的事件处理程序