DateFormatter localizedString - 只有日期和月份,没有年份

时间:2017-09-09 12:26:08

标签: ios swift nsdateformatter localized

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

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

这会打印Sept 15, 201715 Sep 2017

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

1 个答案:

答案 0 :(得分:5)

您可以仅为日期和月份创建结构,并使用它来创建格式模板。然后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.current传递给templateFormatter而不是我创建的示例,那么您将获得模板的本地化版本。

您的问题询问短月格式,以便您可以替换" MMMM"使用" MMM"的自定义格式显示缩短的月份名称而不是完整的月份名称。和" d"而不是" dd"没有领先" 0"在约会。我确定你知道我的意思。