如果我要使用 NSDateFormatter
标准化 EKEvent
的 startDate 属性并设置时区
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 上引用事件时都更改事件的格式?
最佳答案
是的,事件的时区将会同步。如果事件发生在山区时间 9 点,则对于设备常规设置设置为山区时间的任何人来说,该事件将显示为发生在 9 点。如果他们的设备是东部时间,则事件将显示为在 7 点发生。如果您将事件的时区更改为东部时间,山地时间的设备现在将看到事件发生在 11 点,而东部时间设备将看到事件发生时间9 点。因此,更改时区不会更改它在自己的时区中发生的时间,但会更改相对于您将其移出的位置的时间。
在询问用户事件何时发生后,您可以执行 2 件事:1) 您可以假设事件发生在用户设备的当前时区。 2)您可以询问他们事件发生的地点并将事件时区设置为该时间。
如果事件的时间错误,您应该首先将其时区设置为事件实际发生的地点,然后将事件发生的时间更改为实际发生的时间、实际发生的地点。
如果您只是专注于正确设置事件数据,则该数据将正确显示在与您共享日历的每个人的设备上。
关于ios - 更改事件时区是否会影响共享事件中的其他人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18555382/