无法将日期转换为 Swift 中的特定格式
Unable to convert date to particular format in Swift
我正在从服务器获取一些日期字符串,例如“2021-06-25”
如果是今天日期或昨天日期,我必须显示 今天 或 昨天。
否则我必须显示 2021 年 6 月 25 日
对于今天和昨天的日期,它工作正常。
但是,如果是另一天,它显示的是 2021 年 6 月 25 日
如何显示 2021 年 6 月 21 日
static func getDay(_ nowDay: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let journalDate = dateFormatter.date(from: nowDay)
if let convertedDate = journalDate {
let relativeDateFormatter = DateFormatter()
relativeDateFormatter.timeStyle = .none
relativeDateFormatter.dateStyle = .medium
relativeDateFormatter.locale = Locale(identifier: "en_GB")
relativeDateFormatter.doesRelativeDateFormatting = true
let inputFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd"
return relativeDateFormatter.string(from: convertedDate)
}
return ""
}
有什么建议吗?
如果您想要月份的全名,请使用 .long
而不是 .medium
作为日期样式:
relativeDateFormatter.dateStyle = .long
另请注意,您可以使用 ISO8601DateFormatter
来解析 nowDay
,因为它是 ISO-8601 格式:
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [.withFullDate]
let journalDate = dateFormatter.date(from: nowDay)
我正在从服务器获取一些日期字符串,例如“2021-06-25”
如果是今天日期或昨天日期,我必须显示 今天 或 昨天。 否则我必须显示 2021 年 6 月 25 日 对于今天和昨天的日期,它工作正常。
但是,如果是另一天,它显示的是 2021 年 6 月 25 日
如何显示 2021 年 6 月 21 日
static func getDay(_ nowDay: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let journalDate = dateFormatter.date(from: nowDay)
if let convertedDate = journalDate {
let relativeDateFormatter = DateFormatter()
relativeDateFormatter.timeStyle = .none
relativeDateFormatter.dateStyle = .medium
relativeDateFormatter.locale = Locale(identifier: "en_GB")
relativeDateFormatter.doesRelativeDateFormatting = true
let inputFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd"
return relativeDateFormatter.string(from: convertedDate)
}
return ""
}
有什么建议吗?
如果您想要月份的全名,请使用 .long
而不是 .medium
作为日期样式:
relativeDateFormatter.dateStyle = .long
另请注意,您可以使用 ISO8601DateFormatter
来解析 nowDay
,因为它是 ISO-8601 格式:
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [.withFullDate]
let journalDate = dateFormatter.date(from: nowDay)