Swift 如何正确地将日期转换为NSDate?(在展开可选值时意外发现nil)
我正在从远程配置(一个字符串)中提取一个竞赛结束日期,并尝试将其转换为NSDate,以便在计时器中使用Swift 如何正确地将日期转换为NSDate?(在展开可选值时意外发现nil),swift,nsdateformatter,Swift,Nsdateformatter,我正在从远程配置(一个字符串)中提取一个竞赛结束日期,并尝试将其转换为NSDate,以便在计时器中使用 let contestEndDateFormatter = DateFormatter() contestEndDateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" contestEndDate = contestEndDateFormatter.date(from: contestEndDateFromRemoteConfi
let contestEndDateFormatter = DateFormatter()
contestEndDateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
contestEndDate = contestEndDateFormatter.date(from: contestEndDateFromRemoteConfig)! as NSDate
正如您在图中所看到的,字符串“2019-05-29 23:59:59”肯定在变量“ChallengedDateFromRemoteConfig”中(因此远程配置没有问题);然而,我显然做错了什么,因为它抛出了错误“在展开可选值时意外地发现了nil”
我相信dateFormat是正确的,并且与字符串匹配(这是类似stackoverflow问题的建议),因此这也不应该是问题所在
有人知道为什么这会抛出一个错误吗
提前感谢您的指导 试试这个:
var date = "2019-05-29 23:59:59"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
let formattedDate = dateFormatter.date(from: date)
if let formattedDate = formattedDate {
print(formattedDate)
}
1.不要强制转换到
NSDate
。将其保留为日期
。2.将格式化程序的区域设置设置为en\u US\u POSIX
。我似乎没有任何问题。可能按照rmaddy的建议使用en_US_POSIX
。我也不认为尝试将结果转换为NSDate
,这应该是可以互换的,你们都是天才。非常感谢。添加了challengedDateFormatter.locale=locale(标识符:“en_US_POSIX”),现在它工作得很好。是的,@MadProgrammer,当我在模拟器上运行它时,我也没有任何问题。只有在实际设备上进行测试时,才会发生错误。这不是问题的解决方案。