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

iOS - Does setDefaultTimeZone handle daylight saving and timezone offset automatically?

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

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:selectedTimeZone]]

这将覆盖当地时区。我还需要处理 NSDateFormatter 中的任何事情吗?

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

我想如果我覆盖默认时区,我不需要在 NSDateFormatter 中调用 setTimeZone

然后 [NSDate date] 将 return 正确的当前日期还是绝对时间?

这里有几个相关的问题。

This will override the local timezone. Do I still need to handle anything in NSDateFormatter?

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

I think I don't need to call setTimeZone in NSDateFormatter if I override defaulttimezone.

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

And [NSDate date] will then return proper current date or it will be absolute time ?

[NSDate date]的结果完全不受默认时区的影响。 NSDate 没有时区,所以即使您更改默认值也能得到相同的结果。

Does setDefaultTimeZone handle daylight saving and timezone offset automatically?

如果时区使用夏令时,则可以。否则没有。这似乎很明显,但请记住,像 GMT-0500 这样的区域没有夏令时,即使 America/New_York 这样的区域有。