公司客戶端App就在今天上午上線了,晚上的時候線上就發(fā)現(xiàn)問題了,問題出現(xiàn)的是系統(tǒng)是15.4,這個系統(tǒng)是在今年的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);
我們設(shè)置了@"yyyy-MM-dd HH:mm:ss",但是解析12制就會失敗.
本質(zhì)就是NSDateFormatter使用方法不遵守蘋果開發(fā)規(guī)范導(dǎo)致的問題,大家可以看這個文檔.
不知道會有多少個像我一樣的自己挖的坑跳進去的.尷尬了...
從上面的那個文檔可以看出,在處理時間使用NSDateFormatter需要設(shè)置:
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
或
dateFormatter.locale = [NSLocale systemLocale];
同時還需設(shè)置dateFormatter的日歷格式:
dateFormatter.calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierISO8601];