【问题标题】:iOS - Does setDefaultTimeZone handle daylight saving and timezone offset automatically?iOS - setDefaultTimeZone 是否自动处理夏令时和时区偏移?
【发布时间】:2015-06-08 06:35:57
【问题描述】:

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

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:selectedTimeZone]]

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

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

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

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

【问题讨论】:

  • 你试过了吗?发生了什么?
  • 还没有.. 我们在服务器端遇到了一个错误。服务器不是 UTC,而是在不同的时区发送日期。我将在接下来的几天内处理 UTC 到本地时区以及其他时区转换
  • 我看到了您的网站 - 以时区为特色的 Matt 代码。您是否有建议如何处理服务器 UTC 到不同时区的转换,并在发送回服务器时再次转换回 UTC?
  • 对此请ask a new question,并附上详细信息,以便问题得到解答。最好先搜索一下您的问题是否已经被问到。很有可能,它有。

标签: ios nsdate nsdateformatter dst nstimezone


【解决方案1】:

这里有几个相关的问题。

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

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 2015-02-04
    • 2020-01-19
    • 1970-01-01
    • 2012-06-26
    • 2012-11-21
    • 2014-05-06
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多