使用显式格式化程序从NSString中解析NSDate异常
我有关于NSDate解析的一个奇怪的问题。 我有一个来自服务器的特定格式的日期,这就是我如何配置我的NSDateFormatter:
self.serverDateFormatter = [[NSDateFormatter alloc] init]; [self.serverDateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss.SSS"]; [self.serverDateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
使用它:
[self.serverDateFormatter dateFromString:[fields valueForKey:@"dateCreated"]];
所有的工作都很好,直到在某些带有一些语言环境的设备上启动构建。 My 07-05-2013 10:08:30.000
来自服务器的字符串不会被解析,并且dateFromString
返回nil
。
我没有为格式化程序设置语言环境,但我希望dateFormat
足以解析日期,即使没有显式语言环境。
有关于此的任何想法? 谢谢!
问题是NSDateFormatter
自动获取设备首选项,例如时区,区域设置,时间格式(12或24小时)。 在这种情况下,您的日期格式化程序的格式将与来自服务器的传入日期不匹配,因此日期变为零。
明确设置区域设置将起作用。 设置24小时格式的下列语言环境。 12小时你设置en_US。
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
[dateFormatter setLocale:locale];
最好的方法是确保在服务器中只存储24小时格式,如果可能的话。 要么确保将24小时格式化时间发送到服务器,要么在服务器中进行日期格式转换(如果可能的话)。
链接地址: http://www.djcxy.com/p/35169.html上一篇: Exception parsing NSDate from NSString with explicit formatter