0

如果我要使用 a 规范化 aEKEvent的 startDate 属性NSDateFormatter并使用

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];

 event.startDate = [formatter dateFromString:[NSString stringWithFormat:@"%@", [event.startDate]]];

后来我对该事件进行了更改,要求我致电

[self.event.eventStore saveEvent:currentEvent span:EKSpanThisEvent commit:YES error:nil];

它会覆盖服务器上的时区,导致最初创建该共享日历事件的人(使用 GCal 的人)在另一个状态下出现问题,还是只是本地更改?

如果它确实影响事件,那么我确保应用程序端的事件始终代表用户当前时区的最佳方法是什么,而不必在每次我在 UI 上引用它时更改事件的格式?

4

1 回答 1

1

是的,事件的时区将同步。如果某个事件发生在山区时间 9 点,那么对于将设备常规设置设置为山区时间的任何人,该事件将显示为发生在 9 点。如果他们的设备是东部时间,则事件将在 7 点发生。如果将事件的时区更改为东部时间,山区时间的设备现在将看到事件发生在 11 点,东部时间的设备将看到事件发生在 9. 因此,更改时区不会更改它在自己的时区中出现的时间,但它会相对于您移动它的位置来更改它。

在事件发生时询问用户后,您可以做两件事:1)您可以假设事件发生在用户设备的当前时区。2)您可以询问他们事件发生的地点并将事件时区设置为该事件时区。

如果你有一个时间错误的事件,你应该首先将它的时区设置为事件实际发生的地方,然后将它的发生时间更改为它实际发生的时间,它实际发生的地方。

如果您只专注于正确设置事件的数据,它将正确显示在与您共享日历的每个人的设备上。

于 2013-09-01T05:46:09.813 回答