我希望今天从昨天开始提取日期,以便在我更改工作日和月份的语言时自动进行本地化。
我正在使用的本地化日期代码:
let dateFormatter = Foundation.DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let dateStr = dateFormatter.string(from: datePickerView.date)
let timeStr = "00:00:00.000"
let dateString = NSString(format:"%@ %@",dateStr,timeStr)
let mainDF = Foundation.DateFormatter()
mainDF.dateFormat = "MMMM dd, yyyy hh:mm:ss.SSS"
mainDF.locale = Locale(identifier: "en_US_POSIX")
mainDF.timeZone = TimeZone(identifier: "UTC")
let date = mainDF.date(from: dateString as String)
如何实现这一目标?
答案 0 :(得分:3)
DateFormatter
有一个特殊标志:doesRelativeDateFormatting
,使用为此格式化程序设置的区域设置,以相对格式呈现日期。
...如果日期格式化程序使用相对日期格式,请尽可能使用它 用短语替换其输出的日期组件,例如 “今天”或“明天” - 表示相对日期。 可用 短语取决于日期格式化程序的区域设置;而对于 在将来的日期,英语可能只允许“明天”,法语可能 允许“后天的第二天”......
示例:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.autoupdatingCurrent // Using system locale
dateFormatter.doesRelativeDateFormatting = true // Enabling relative date formatting
// other dataFormatter settings here, irrelevant for example
dateFormatter.timeStyle = .none
dateFormatter.dateStyle = .medium
let now = Date()
let dateString: String = dateFormatter.string(from: now)
print("dateString: \(dateString)") // Prints `dateString: <Today in current locale>`