NSDate相差8个小时

直接看代码,有详细的注释可以知道具体怎么用:

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. NSDate * date = [NSDate date];  
  2.   
  3. NSLog(@"date:%@", date);  
  4.   
  5. NSDateFormatter * outputFormatter = [[NSDateFormatter alloc] init];  
  6.   
  7. [outputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];  
  8.   
  9. NSTimeZone * timezone = [NSTimeZone timeZoneForSecondsFromGMT:88 * 3600];//直接指定时区  
  10.   
  11. [outputFormatter setTimeZone:timezone];//这里指定不指定时区并没有什么用  
  12.   
  13. [outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];  
  14.   
  15. NSString * outputDate = [outputFormatter stringFromDate:date];  
  16.   
  17. NSLog(@"outputDate:%@", outputDate);  
  18.   
  19.   
  20. //这里处理8个小时时间差问题,下面这三句可以解决相差8个小时问题  
  21. NSTimeZone * zone = [NSTimeZone systemTimeZone];  
  22.   
  23. NSInteger interval = [zone secondsFromGMTForDate:date];  
  24.   
  25. NSDate * nowDate = [date dateByAddingTimeInterval:interval];  
  26.   
  27. NSLog(@"nowDate:%@", nowDate);  
  28.   
  29. //所以,NSDate转字符串和直接使用NSDate的时候一定要注意,转字符串的时候不用处理差8个小时问题,直接用NSDate的时候需要处理相差8个小时的问题  
  30.   
  31.   
  32.   
  33.   
  34.   
  35. NSDateFormatter * outputFormatter1 = [[NSDateFormatter alloc] init];  
  36.   
  37. [outputFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];  
  38.   
  39. NSString * outputNowDate = [outputFormatter1 stringFromDate:nowDate];  
  40.   
  41. NSLog(@"outputNowDate:%@", outputNowDate);  
  42.   
  43. //使用outputFormatter输出的时候总是和NSDate相差8个小时  

输出:

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 2016-04-20 16:54:42.286 date1[16557:6377276] date:2016-04-20 08:54:42 +0000  
  2. 2016-04-20 16:54:42.287 date1[16557:6377276] outputDate:2016-04-20 16:54:42  
  3. 2016-04-20 16:54:42.288 date1[16557:6377276] nowDate:2016-04-20 16:54:42 +0000  
  4. 2016-04-20 16:54:42.288 date1[16557:6377276] outputNowDate:2016-04-21 00:54:42  


希望你可以通过上面的代码,解决相差8个小时问题。

转于:http://blog.csdn.net/lvdezhou/article/details/51202406

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值