是否可以仅从月份和日期获取本地化的字符串?
let localizedDate = DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .none)
这会打印Sept 15, 2017
或15 Sep 2017
。
我想尊重用户的日期格式而不显示年份,只显示月份和日期。我的意思是Sept 15
或15 Sep
。有可能吗?
答案 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"在约会。我确定你知道我的意思。