如何解决使用DateFormatter格式化字符串日期
我正在编写将字符串日期(如“ 2018-05-01 18:23:31”)格式化为日语日期格式的字符串类型的函数,即“ 2018年5月1日”。我做了一个函数,但是当我运行它的时候抛出了一个错误提示
致命错误:解开可选值时意外发现nil
当我打印输入字符串日期时,它具有一个值,但是在转换时,我开始出现错误。谁能告诉我为什么我对此功能一无所知?
func setTemplate (strDate: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ydMMM",options: 0,locale: Locale(identifier: "ja_JP"))
print(strDate) // getting this value => "2018-05-01 18:23:31"
let date = dateFormatter.date(from: strDate)! // getting an error in here
let result = dateFormatter.string(from: date)
return result
}
我想我正在尝试摆脱字符串中的时间,并且它以某种方式引发了我错误,但是不确定...
解决方法
您需要先解析您的字符串,然后才能从结果日期中获取本地化的字符串:
let strDate = "2018-05-01 18:23:31"
func setTemplate (strDate: String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.locale = .init(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
guard let date = dateFormatter.date(from: strDate) else { return nil }
let locale = Locale(identifier: "ja_JP")
dateFormatter.locale = locale
dateFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ydMMM",options: 0,locale: locale)
return dateFormatter.string(from: date)
}
setTemplate(strDate: strDate) // "2018年5月1日"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。