简体   繁体   English

迄今为止的Swift字符串日期

[英]Swift string date to date

I read a date from UserDefaults.standard as string in the following format:我从UserDefaults.standard读取了一个日期作为以下格式的字符串:

"2020-11-06T05:20:20+0100" “2020-11-06T05:20:20+0100”

I try to convert this string to a date using the following code我尝试使用以下代码将此字符串转换为日期

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "de_DE")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let dateString: String! = UserDefaults.standard.string(forKey: "timeShared")
let date = dateFormatter.date(from: dateString)

However, the result is always nil .但是,结果始终为nil Using let date = dateFormatter.date(from: dateString)!使用let date = dateFormatter.date(from: dateString)! explicitly causes a fatal error.明确导致致命错误。

Any ideas what to do?任何想法该怎么做?

Changing the former code to将以前的代码更改为

dateFormatter.dateFormat = "\"yyyy-MM-dd'T'HH:mm:ssZ\""

returns a neatly formatted date subsequently.随后返回一个格式整齐的日期。 The error was that the date read from UserDefaults included "" .错误是从 UserDefaults 读取的日期包含""

May be UserDefaults.standard.string(forKey: "timeShared") have no value or the value is not in string format and you are doing force unwrapping in let dateString: String! = UserDefaults.standard.string(forKey: "timeShared")可能是UserDefaults.standard.string(forKey: "timeShared")没有值或该值不是字符串格式,并且您在let dateString: String! = UserDefaults.standard.string(forKey: "timeShared")强制展开let dateString: String! = UserDefaults.standard.string(forKey: "timeShared") let dateString: String! = UserDefaults.standard.string(forKey: "timeShared") here that making the fatal error. let dateString: String! = UserDefaults.standard.string(forKey: "timeShared")这里产生了致命错误。

Better add a conditional if, then use the dateString .最好添加一个条件 if,然后使用dateString

Refer the below code.参考下面的代码。

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "de_DE")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
if let dateString: String = UserDefaults.standard.string(forKey: "timeShared") {
    let date = dateFormatter.date(from: dateString)
    print(date)
} else {
    print("Data in UserDefaults: \(UserDefaults.standard.string(forKey: "timeShared"))")
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM