黑马程序员技术交流社区
标题:
关于时间打印问题
[打印本页]
作者:
微尘•逐梦
时间:
2014-4-17 00:15
标题:
关于时间打印问题
本帖最后由 微尘•逐梦 于 2014-4-17 21:04 编辑
下面这段代码
NSString *time = @"2011/09/10 18:56";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
NSDate *date = [formatter dateFromString:time];
NSString *date2 = [formatter stringFromDate:date];
NSLog(@"%@", date);
NSLog(@"%@",date2);
复制代码
打印结果是
2014-04-17 00:11:35.428 08-NSDate[4261:303] 2011-09-10 10:56:00 +0000
2014-04-17 00:11:35.429 08-NSDate[4261:303] 2011/09/10 18:56
复制代码
问什么打印出来一个是零时区时间,一个是输入的时间?它是根据什么进行转换的?
作者:
流氓划过夜空
时间:
2014-4-17 01:05
首先说明你两个打印是不一样的打印date的时候 调用的是NSDate的description方法,我看文档说是打印的时候会参看一个Dateformatter dateformatter里面有时区这个参数,具体默认值是哪个没找出来 只看到解释说默认的时区不同于当前用户的时区。应该就是0时区吧。我也是看打印结果猜的。
date2是你自己创建的Dateformatter转换的date,Dateformatter创建的时候也有默认的时区,没找到具体是哪个,不过可以肯定的是时间还是同一个时间,也就是说你把字符串转换为Date时用的时区 跟你把Date转换为字符串时用的时区是一样的,这也是date2跟time为什么是一样的原因 ,总不至于转换来转换去时间变了。
可以总结为你打印Date对象的时候用的formatter跟你自己创建的formatter不是一个对象,默认的时区不一样。
或者你可以把你系统默认时区改为0时区 。 两个打印结果就一样了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2