iOS - setDefaultTimeZone是否自动处理夏令时和时区偏移?

时间:2015-04-03 06:56:54

标签: ios nsdate nsdateformatter dst nstimezone

服务器当前以UTC格式存储日期,而应用程序用户可以选择任何时区。

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:selectedTimeZone]]

这将覆盖本地时区。我还需要处理NSDateFormatter中的任何内容吗?

setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"

如果我覆盖defaulttimezone,我认为我无需在setTimeZone中调用NSDateFormatter

然后[NSDate date]将返回正确的当前日期,或者它将是绝对时间?

1 个答案:

答案 0 :(得分:1)

这里有一些相关的问题。

  

这将覆盖本地时区。我还需要处理NSDateFormatter中的任何内容吗?

您不需要设置时区,因为如果不这样做,它会在创建日期格式化程序时使用默认值。

  

如果我覆盖defaulttimezone,我想我不需要在NSDateFormatter中调用setTimeZone。

是的,但如果您更改了默认时区,则需要创建一个新的NSDateFormatter,因为它没有注意到默认值已更改。或者您可以随时更改默认值时更改日期格式化程序的时区。

  

然后[NSDate date]将返回正确的当前日期,或者它将是绝对时间?

[NSDate date]的结果完全不受默认时区的影响。 NSDate没有时区,因此即使您更改默认值,也会获得相同的结果。

  

setDefaultTimeZone会自动处理夏令时和时区偏移吗?

如果时区使用夏令时,则为是。否则没有。这似乎很明显但请注意,GMT-0500等区域没有夏令时,即使像America/New_York这样的区域也是如此。