首页 > 移动平台 > 详细

IOS NSDate NSDateFormatter 导致相差8小时

时间:2016-01-10 07:03:25      阅读:1249      评论:0      收藏:0      [点我收藏+]

时间问题应该是所有编程语言都要处理的。详细学过php的同学知道,php中也会有相差8小时的问题,然而php可以非常方便的解决的,直接设置下就好了

我最近在学习IOS的过程中,发现IOS的日期处理也是个大坑。记录下我遇到的问题

我开始使用NSDate获取时间发现 相差8小时,解决方法如下

NSDate *date = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localeDate = [date  dateByAddingTimeInterval: interval];

上面4句代码可以解决NSDate 8小时问题

然后我为了获取今天的起止时间,我就简单 处理成 获取今天的日期,然后拼接 起止时间 00:00:00 ~ 23:59:59

问题来了,在使用NSDateFormatter进行格式化之后,发现又差了8个小时,这真是蛋疼的事情呀

通过如下代码解决

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

这样才解决了我纠结的事情

总结来说IOS在时间日期这块处理的 没有 php优雅,太多冗余代码了

完整代码如下

    NSDate *date = [NSDate date];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate: date];
    NSDate *localeDate = [date  dateByAddingTimeInterval: interval];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSString *todayDate = [dateFormatter stringFromDate:localeDate];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     NSDate *startDate =  [dateFormatter dateFromString:[todayDate stringByAppendingString:@" 00:00:00"]];
   NSDate *endDate = [dateFormatter dateFromString:[todayDate stringByAppendingString:@" 23:59:59"]];



原文地址:IOS NSDate NSDateFormatter 导致相差8小时

IOS NSDate NSDateFormatter 导致相差8小时

原文:http://www.cnblogs.com/apanly/p/5117726.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!