[英]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.