ios 日期转换 时区问题
2016-11-08 00:00
435 查看
摘要: 时区问题
首先需要认识几个概念
1、NSDate:官方描述的是
翻译: NSDate对象封装一个时间点,独立于任何特定的历法的系统或时区。日期对象是不可变的,代表一个不变的时间间隔相对于绝对引用日期
所以要明白,NSDate存放的是一个UTC时间点,和时区啊,地点啊都没有关系,而我们所说的时区是为了人们统一标准,对时间的一个修饰,是一个理念的东西,不要误认为时区是时间的一部分,时区上只不过是约束了变现形式,实际上不管将时区设置多少,某一时间点距离1970年那个时间点是不变的。
所以NSDate打印出来永远是基于0时区的,和我们看到的相差8小时
2、理解了上面开始进入正式话题-转换
a、NSDate 转 NSString
打印出来差了八小时,是因为NSDate存放的是UTC标准时间,而且你也无法改变NSDate存放的形式
使用NSDateFormatter来格式化输出
NSDateFormatter创建后默认设置是和系统一样的,所以转换后格式正确
b、NSString 转 NSDate
打印结果相差八小时,不要认为错了,其实是它将你的时间按照本地时区转化为标准时间存入了NSDate对象中
,没看到后面有+0000 而不是+0800吗。
但是我们有时候就是想要NSDate打印出来是我们的东八区该怎么办呢,如下:
设置:[formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];
相当于逻辑上把我们东八区当做了标准时间使用。
首先需要认识几个概念
1、NSDate:官方描述的是
NSDateobjects encapsulate a single point in time, independent of any particular calendrical system or time zone. Date objects are immutable, representing an invariant time interval relative to an absolute reference date
翻译: NSDate对象封装一个时间点,独立于任何特定的历法的系统或时区。日期对象是不可变的,代表一个不变的时间间隔相对于绝对引用日期
所以要明白,NSDate存放的是一个UTC时间点,和时区啊,地点啊都没有关系,而我们所说的时区是为了人们统一标准,对时间的一个修饰,是一个理念的东西,不要误认为时区是时间的一部分,时区上只不过是约束了变现形式,实际上不管将时区设置多少,某一时间点距离1970年那个时间点是不变的。
所以NSDate打印出来永远是基于0时区的,和我们看到的相差8小时
2、理解了上面开始进入正式话题-转换
a、NSDate 转 NSString
打印出来差了八小时,是因为NSDate存放的是UTC标准时间,而且你也无法改变NSDate存放的形式
使用NSDateFormatter来格式化输出
NSDateFormatter创建后默认设置是和系统一样的,所以转换后格式正确
b、NSString 转 NSDate
打印结果相差八小时,不要认为错了,其实是它将你的时间按照本地时区转化为标准时间存入了NSDate对象中
,没看到后面有+0000 而不是+0800吗。
但是我们有时候就是想要NSDate打印出来是我们的东八区该怎么办呢,如下:
设置:[formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];
相当于逻辑上把我们东八区当做了标准时间使用。
相关文章推荐
- IOS开发笔记-字符串转换为日期时间存在时差问题的处理
- [Ios] DatePicker获取时间时,如何转换时区的问题
- IOS将字符串转换为日期时间格式的一些问题
- 数据库问题处理收集(日期处理,表格转换矩阵)
- Java写的手机计费系统(作为学习参考的实例:关键是Java类库里面的date和Calendar的使用和相互转换,以及一些日期的实际问题)
- mysql 日期转换问题
- 使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题
- 基于java时区转换夏令时的问题及解决方法
- eclipse/MyEclipse 日期格式、注释日期格式、时区问题
- json 日期转换问题
- 日期转换的简单问题
- DECODE和日期类型转换中出现的问题
- sql日期转换问题
- java与json互相转换(解决日期问题) 【转】http://hi.baidu.com/nwwolfhdy/blog/item/54e0ac13a6282f0e5baf53f5.html
- eclipse/MyEclipse 日期格式、注释日期格式、时区问题
- 用VBA转换文本文件日期格式问题
- string int Integer之间的转换以及日期问题[转]
- Object.ToString函数在转换日期类型数据时的精度问题
- java 字符串和日期类型的相互转换问题
- 一个日期转换的问题