我有一种方法可以将特定格式的字符串转换为NSDate,但它偶尔会返回零。
- (NSDate *)dateFromString:(NSString *)dateAndTime
{
NSDate *date;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter setTimeZone:gmt];
date = [formatter dateFromString:dateAndTime];
return date;
}从我所能判断的情况来看,这大部分时间都是可行的,但总有一部分时间是失败的。
我跟踪这个bug已经有一段时间了,所以当这种情况发生时,有一些代码会使应用程序崩溃。崩溃报告告诉我使方法返回为零的值。
例如,我收到了一份坠机报告,报告说“2015年4月14日下午7:35”返回为零。
当我为每个日期编写相同的值时,它会在我的计算机上以调试模式运行应用程序时工作。
这里会发生什么事?我不是为NSDate报道了一些案例吗?为什么不是每个设备都会发生这种情况?
发布于 2015-04-15 00:43:49
首先,4/14/2015 7:35 PM的日期字符串可能是M/d/yyyy h:m a或M/dd/yyyy h:mm a。Patterns
其次,建议将NSLocale设置为NSDateFormatter。
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];当我和一个中国人一起工作时,我遇到了一个同样的问题,那就是NSDate是nil。它只发生在特定的设备上,问题是区域设置。
若要再现问题,请执行以下步骤:
Chinese, Simplifiedhttps://stackoverflow.com/questions/29639126
复制相似问题