【发布时间】:2017-09-20 17:22:30
【问题描述】:
我在过去 2 年运行的内部应用程序有不同格式的 messages dates
1* Sep 20, 2017 at 8:09:39 PM
2* Feb 3, 2017, 5:49:42 PM
我正在像这样将这些字符串转换为日期
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateStyle:NSDateFormatterMediumStyle];
[df setTimeStyle:NSDateFormatterMediumStyle];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
return [df dateFromString:dtStr];
对于日期 1,它在 iOS 10 和 11 上完美运行
但对于日期 2,它仅适用于 iOS 10,而不适用于 iOS 11
我该如何解决这个问题?
【问题讨论】:
-
期望像 NSDateFormatterMediumStyle 这样的模糊格式能够像这样工作,实在是懒惰和冒险。如果您知道日期字符串的格式,为什么不使用与它匹配的特定格式的格式化程序?
-
@matt 同意,但有趣的是,该代码适用于 iOS 10 而不是 11。我想知道 Apple 是否更改了这些操作系统版本之间的默认日期或时间格式?似乎很有可能。
-
@DuncanC 也许他们有,但代码一开始就很傻;它或多或少是偶然的。
-
问题是多个人已经在这个项目上工作过,将日期固定到一个甲酸盐现在不起作用(稍后修复),因为已经存储在数据库中的消息具有不同的日期格式...我需要修复此问题以发布热修复......
-
@S.J 你误会了。您的解决方法是将
dateStyle和timeStyle的使用替换为dateFormat的使用。您必须尝试可以发送到您的应用的每种可能格式。
标签: ios objective-c nsdate nsdateformatter