公司客户端App就在今天上午上线了,晚上的时候线上就发现问题了,问题出现的是系统是15.4,这个系统是在今年的3月16号更新的,然后本地时间格式是12小时制,代码获取的本地时间,就会有Bug:
NSDate *date = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *dateStr = [dateFormatter stringFromDate:date];
NSLog(@"%@",dateStr);
我们设置了@"yyyy-MM-dd HH:mm:ss",但是解析12制就会失败.
本质就是NSDateFormatter使用方法不遵守苹果开发规范导致的问题
,大家可以看这个文档.
不知道会有多少个像我一样的自己挖的坑跳进去的.尴尬了...
从上面的那个文档可以看出,在处理时间使用NSDateFormatter
需要设置:
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
或
dateFormatter.locale = [NSLocale systemLocale];
同时还需设置dateFormatter的日历格式:
dateFormatter.calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierISO8601];