问题现象
已知服务器返回日期字符串“Thu Jan 01 08:00:00 CST 1970”,通过如下方式转换成时间戳失败(模拟器成功,真机失败),date为nil。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE MMM dd HH:mm:ss 'CST' yyyy"];
NSDate *date = [formatter dateFromString:time];
return (int)[date timeIntervalSince1970];
问题分析
通过比较真机和模拟器发现 NSLocale不一致,模拟器为“zh-CN”,真机为“en_US”,所以需要设置NSLocale,如下:
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]];