服务器当前以UTC格式存储日期,而应用程序用户可以选择任何时区。
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:selectedTimeZone]]
这将覆盖本地时区。我还需要处理NSDateFormatter
中的任何内容吗?
setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"
如果我覆盖defaulttimezone,我认为我无需在setTimeZone
中调用NSDateFormatter
。
然后[NSDate date]
将返回正确的当前日期,或者它将是绝对时间?
答案 0 :(得分:1)
这里有一些相关的问题。
这将覆盖本地时区。我还需要处理
NSDateFormatter
中的任何内容吗?
您不需要设置时区,因为如果不这样做,它会在创建日期格式化程序时使用默认值。
如果我覆盖defaulttimezone,我想我不需要在NSDateFormatter中调用setTimeZone。
是的,但如果您更改了默认时区,则需要创建一个新的NSDateFormatter
,因为它没有注意到默认值已更改。或者您可以随时更改默认值时更改日期格式化程序的时区。
然后
[NSDate date]
将返回正确的当前日期,或者它将是绝对时间?
[NSDate date]
的结果完全不受默认时区的影响。 NSDate
没有时区,因此即使您更改默认值,也会获得相同的结果。
setDefaultTimeZone会自动处理夏令时和时区偏移吗?
如果时区使用夏令时,则为是。否则没有。这似乎很明显但请注意,GMT-0500
等区域没有夏令时,即使像America/New_York
这样的区域也是如此。