pap*_*ay0 6 date nsdateformatter ios swift dateformatter
Jun 28
你知道我如何在 iOS 上获得以下日期字符串吗?
Jun 28
用英语28 juin
法语我想要基本上short month, day, without year
。(按照本地化顺序,例如day, month
法语)
我尝试了以下方法:
\nlet dateFormatter = DateFormatter()\ndateFormatter.dateFormat = "MMM dd"\nlet dateStr = dateFormatter.string(from: Date())\nprint(dateStr) // --> Jun 28\n
Run Code Online (Sandbox Code Playgroud)\n它适用于英语,但不适用于其他语言。
\n例如,如果您设置
\n dateFormatter.locale = Locale(identifier: "fr\xe2\x80\x9d)
\n它应该输出28 juin
,但它返回juin 28
。
我也尝试使用:
\nlet date = Date()\nlet customFormat = "MMM dd"\nlet frLocale = Locale(identifier: "fr_FR")\nlet frFormat = DateFormatter.dateFormat(fromTemplate: customFormat, options: 0, locale: frLocale)\nlet formatter = DateFormatter()\nformatter.dateFormat = frFormat\nlet dateStr = formatter.string(from: date)\nprint(dateStr) // -> 28 Jun\n
Run Code Online (Sandbox Code Playgroud)\n^__ 顺序正确,但月份是英文的。
\n最接近的是:
\nlet dateFormatter = DateFormatter()\ndateFormatter.timeStyle = .none\ndateFormatter.dateStyle = .medium\nlet dateStr = dateFormatter.string(from: Date())\nprint(dateStr) // --> Jun 28, 2020\n
Run Code Online (Sandbox Code Playgroud)\n^__ 但我不想要年份。
\n我相信文档的这一部分是关键(我的意思是,如果我只是在格式化程序上重新设置区域设置而不再次设置模板,我会得到您在第一种情况下描述的内容):
func setLocalizedDateFormatFromTemplate(String)
重要提示:您应该仅在设置接收器的区域设置后调用此方法。
果然,当你这样做时,你会得到正确的格式:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
dateFormatter.setLocalizedDateFormatFromTemplate("MMM dd")
print(dateFormatter.string(from: Date())) // --> Jun 28
dateFormatter.locale = Locale(identifier: "fr_FR")
dateFormatter.setLocalizedDateFormatFromTemplate("MMM dd")
print(dateFormatter.string(from: Date())) // --> 28 juin
Run Code Online (Sandbox Code Playgroud)
顺便说一句,WWDC'20 中有一个关于格式化程序的非常好的会议
归档时间: |
|
查看次数: |
871 次 |
最近记录: |