NSDate时区问题

  • UTC介绍

iOS是用UTC表示时区的。UTC是协调世界时,又称世界统一时间、时间标准时间、国际协调时间。协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。UTC不属于任何时区,但是其他地区时间的表示可以跟时区挂钩,比如中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚的时间与UTC的时差均为+8,也就是UTC+8

  • 测试情况

先看截图

测试情况
  • 可以看到通过断点的结果[NSDate date]是用 UTC表示的,与北京时间相差8个小时,但是通过NSDateFormatter转为字符串后,跟北京时间是一样的。说明系统在通过NSDateFormatter把NSDate类型转成字符串时,帮我们转为成了当前时区的时间。
  • 将字符串通过NSDateFormatter转成NSDate之后,系统又帮我们把时间减去了8个小时,变成了UTC表示。
  • 而通过NSLog打印的NSDate类型与当前时区时间是相等的。
  • 结论:

我们在一般情况下做时间显示或者比较时不需要自己对时间时区做处理,是因为系统默认帮我们做了处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容