A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微尘•逐梦 中级黑马   /  2014-4-17 00:15  /  733 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 微尘•逐梦 于 2014-4-17 21:04 编辑

下面这段代码
  1. NSString *time = @"2011/09/10 18:56";
  2.    
  3.     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  4.     formatter.dateFormat = @"yyyy/MM/dd HH:mm";
  5.    
  6.     NSDate *date = [formatter dateFromString:time];
  7.     NSString *date2 = [formatter stringFromDate:date];
  8.    
  9.     NSLog(@"%@", date);
  10.     NSLog(@"%@",date2);
复制代码

打印结果是
  1. 2014-04-17 00:11:35.428 08-NSDate[4261:303] 2011-09-10 10:56:00 +0000
  2. 2014-04-17 00:11:35.429 08-NSDate[4261:303] 2011/09/10 18:56
复制代码

问什么打印出来一个是零时区时间,一个是输入的时间?它是根据什么进行转换的?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

1 个回复

倒序浏览
首先说明你两个打印是不一样的打印date的时候  调用的是NSDate的description方法,我看文档说是打印的时候会参看一个Dateformatter   dateformatter里面有时区这个参数,具体默认值是哪个没找出来    只看到解释说默认的时区不同于当前用户的时区。应该就是0时区吧。我也是看打印结果猜的。
date2是你自己创建的Dateformatter转换的date,Dateformatter创建的时候也有默认的时区,没找到具体是哪个,不过可以肯定的是时间还是同一个时间,也就是说你把字符串转换为Date时用的时区  跟你把Date转换为字符串时用的时区是一样的,这也是date2跟time为什么是一样的原因 ,总不至于转换来转换去时间变了。
可以总结为你打印Date对象的时候用的formatter跟你自己创建的formatter不是一个对象,默认的时区不一样。
或者你可以把你系统默认时区改为0时区  。   两个打印结果就一样了。


评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马