【发布时间】:2014-09-24 08:13:30
【问题描述】:
创建 NSCalendar 以使其时区为 PST 的方法是什么?
如果 iPhone 在 LA (PST) 或 NYC (EST),情况仍然如此吗?代码会根据设备的位置/时区进行调整吗?
【问题讨论】:
标签: ios iphone ios7 nsdate nscalendar
创建 NSCalendar 以使其时区为 PST 的方法是什么?
如果 iPhone 在 LA (PST) 或 NYC (EST),情况仍然如此吗?代码会根据设备的位置/时区进行调整吗?
【问题讨论】:
标签: ios iphone ios7 nsdate nscalendar
首先,如果您使用currentCalendar 获取日历,那么它将针对用户的当前时区,因此如果您明确指定日历的时区,那么它将具有该时区,例如:
NSCalendar *cal = [NSCalendar currentCalendar];
NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"US/Pacific"];
[cal setTimeZone:zone];
如果您想要一个带有用户当前时区的日历,那么您可以省略时区的设置。
如果您想要一个响应用户设置更改的日历,那么您会得到一个autoUpdatingCurrentCalendar:
NSCalendar *cal = [NSCalendar autoUpdatingCurrentCalendar];
我不确定“如果 iphone 位于不同的时区”是什么意思。您问如何获取特定时区的日历;设置时区后,它会保留在该日历实例中。如果您希望日历报告用户的时区,您可以使用 currentCalendar 或 autoUpdatingCurrentCalendar 并且不要指定时区。
【讨论】:
NSDate)是同一时间点,无论您最终决定在哪个时区表示它。如果将其转换为 字符串(例如,使用 NSDateFormatter,那么此时时区就会生效)。