根據(jù) 官方文檔NSDateFormatter宾舅, 用戶非24小時時間制(設置>通過>日期和時間>24小時制)赚窃,這會導致 NSDateFormatter 重寫您設置的格式字符串,這可能會導致時間解析失斢瓤稹(時間戳轉換為 0)僚匆。
解決辦法:在給NSDateFormatter設置 locale,官方推薦使用地區(qū)identifier:en_US_POSIX
//時間字符串轉時間戳(毫秒),適配12/24小時制,formatStr 默認為@"yyyyMMdd HH:mm"
- (NSString *)getTimeStampWith:(NSString *)timeStr withFormar:(NSString *)formatStr{
if (formatStr.length==0){
formatStr = @"yyyyMMdd HH:mm";
}
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:formatStr];
//強制更改為24小時制
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
NSDate *localDate2 = [dateFormatter dateFromString:timeStr];
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([localDate2 timeIntervalSince1970] * 1000)];
return timeSp;
}