如何使用这种格式将此字符串转换为日期?
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
总是returnnil
注:我在本站找到的答案都是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: Date Format Patterns
如果你愿意,可以把它变成扩展:
// 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)
}
我和一个 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
总是returnnil
注:我在本站找到的答案都是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: Date Format Patterns
如果你愿意,可以把它变成扩展:
// 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)
}