[英]How to convert this string in a date with this format?
我使用一个 API,当我要求一个日期时,这个 API 得到我这样的String
:
20190717-0300
我想以这种格式在UILabel
显示该日期: "dd '\\(preposition)' MMMM"
我的尝试是进行字符串扩展:
extension String {
var toDate: String? {
let dateFormatter = DateFormatter()
let preposition = NSLocalizedString("of", comment: "Preposition of dates formatted")
dateFormatter.dateFormat = "dd '\(preposition)' MMMM"
dateFormatter.locale = Locale.current
if let date = dateFormatter.date(from: self) {
let dateString = dateFormatter.string(from: date)
return dateString
}
return nil
}
}
然后使用它:
myLabel.text = thatString.toDate
但是.toDate
总是返回nil
注意:我在网站上找到的答案是 ISO 格式字符串的情况。
预期结果:
7 月 17 日
基本上你需要一个输入日期格式和一个输出日期格式。
extension String {
var toDate: String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMddZ"
if let date = dateFormatter.date(from: self) {
let preposition = NSLocalizedString("of", comment: "Preposition of dates formatted")
dateFormatter.dateFormat = "dd '\(preposition)' MMMM"
let dateString = dateFormatter.string(from: date)
return dateString
}
return nil
}
}
我完全同意 rmaddy 使用setLocalizedDateFormatFromTemplate
的评论
日期字段符号的来源是unicode.org:日期格式模式
如果你喜欢,把它变成扩展:
// function
func formatDate(_ from:String, preposition:String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMddZ"
guard let date = dateFormatter.date(from: from) else {
return nil
}
dateFormatter.dateFormat = "dd '\(preposition)' MMMM"
return dateFormatter.string(from: date)
}
// example usage
let str = "20190717-0300"
if let formatted = formatDate(str, preposition: "of") {
print(formatted)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.