Iphone 使用NSDateFormatter的字符串日期,不考虑12h-24h设置

Iphone 使用NSDateFormatter的字符串日期,不考虑12h-24h设置,iphone,time,nsstring,format,nsdateformatter,Iphone,Time,Nsstring,Format,Nsdateformatter,今天我的问题是关于日期格式和字符串。 我的应用程序从internet下载一些表示日期的字符串。日期格式总是这样:“2010-05-24 20:45” 我需要将此字符串转换为NSDate对象,以便执行一些日期操作。 我尝试了以下代码: NSString * dateString = @"2010-05-24 at 20:45" // actually downloaded from the internet NSDateFormatter * myDateFormatter = [[NSDateF

今天我的问题是关于日期格式和字符串。 我的应用程序从internet下载一些表示日期的字符串。日期格式总是这样:“2010-05-24 20:45” 我需要将此字符串转换为NSDate对象,以便执行一些日期操作。 我尝试了以下代码:

NSString * dateString = @"2010-05-24 at 20:45" // actually downloaded from the internet
NSDateFormatter * myDateFormatter = [[NSDateFormatter alloc] init];
[myDateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];
NSDate * dateFromString = [myDateFormatter dateFromString:dateString];
只要iPhone设置为24小时时钟,这似乎工作得很好。只要我在常规设置中切换到12小时时钟,就不会创建NSDate对象(并且应用程序会崩溃) 我看过其他人有类似的问题,但我似乎没有找到解决办法。 现在问题是: 只要我指定NSDateFormatter应该使用哪种格式来解析字符串(该格式不可修改,因为它来自web),那么NSDateFormatter对用户设置是敏感的,这对我来说毫无意义。检查用户设置有什么用? 更重要的是,如何执行任务(无论用户设置如何,从字符串中获取NSDate对象)?

解释了此问题背后的原因以及如何解决此问题

NSString * dateString = @"2010-05-24 at 20:45" // actually downloaded from the internet
NSDateFormatter * myDateFormatter = [[NSDateFormatter alloc] init];
[myDateFormatter setDateFormat:@"yyyy-MM-dd 'at' hh:mm"];
NSDate * dateFromString = [myDateFormatter dateFromString:dateString];

在设置日期格式时使用“hh”而不是“hh”

我从苹果公司找到了这篇文章,正好解释了这个问题!()

但无论如何,一个简单的答案是,您需要将区域设置设置设置为“en_US_POSIX”,以便它与任何用户设置的日期相关配置一起工作

let stringDate = "2017-03-15T11:37:16-03:00" // ISO8601 formatted string

let iso8601Formatter = DateFormatter()
iso8601Formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
iso8601Formatter.locale = Locale(identifier: "en_US_POSIX")
iso8601Formatter.date(from: stringDate)

好。。。字符串是可修改的,我只是不想:)链接断开。为了避免这个问题,每当你使用对另一个站点的引用时,先粘贴代码,然后粘贴链接。用链接的内容更新你的帖子,这样以后它就不会再出现了。