首页 > 解决方案 > 如何正确地将日期转换为 NSDate?(在展开 Optional 值时意外发现 nil)

问题描述

我正在从远程配置(字符串)中提取比赛结束日期,并尝试将其转换为 NSDate 以在计时器中使用。

    let contestEndDateFormatter = DateFormatter()
    contestEndDateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    contestEndDate = contestEndDateFormatter.date(from: contestEndDateFromRemoteConfig)! as NSDate

如图所示,字符串“2019-05-29 23:59:59”肯定在变量“contestEndDateFromRemoteConfig”中(所以远程配置不是问题);但是,我显然做错了,因为它抛出错误“在展开可选值时意外发现 nil”。

Xcode 截图

我相信 dateFormat 是正确的并且与字符串匹配(这是类似 stackoverflow 问题的建议),所以这也不应该是问题。

谁能明白为什么这会引发错误?

提前感谢任何方向!

标签: swiftnsdateformatter

解决方案


尝试这个:

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)
}

推荐阅读