7

是否可以仅使用月份和日期从日期获取本地化字符串?

let localizedDate = DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .none)

这打印Sept 15, 201715 Sep 2017

我想尊重用户的日期格式,而不是显示年份,只显示月份和日期。我的意思是Sept 1515 Sep。可能吗?

4

1 回答 1

16

您可以仅为日和月创建格式,并使用它来创建格式模板。DateFormatter 然后将其本地化。作为(Xcode9)游乐场的示例:

let date = Date()
let customFormat = "ddMMMM"

let gbLocale = Locale(identifier: "en_GB")
let ukFormat = DateFormatter.dateFormat(fromTemplate: customFormat, options: 0, locale: gbLocale)
let usLocale = Locale(identifier: "en_US")
let usFormat = DateFormatter.dateFormat(fromTemplate: customFormat, options: 0, locale: usLocale)

let formatter = DateFormatter()
formatter.dateFormat = ukFormat
formatter.string(from: date) // -> "09 September"

formatter.dateFormat = usFormat
formatter.string(from: date) // -> "September 09"

如果您传入Locale.currenttemplateFormatter 而不是我创建的示例,那么您将获得模板的本地化版本。

您的问题询问短月份格式,因此您可以将自定义格式中的“MMMM”替换为“MMM”,以显示缩短的月份名称而不是完整的月份名称。和一个“d”而不是“dd”,在日期中没有前导“0”。我相信你知道我的意思。

于 2017-09-09T13:03:29.743 回答