获取语​​言环境日期格式信息

Get Locale Date Format Information

Using Swift 4、有没有办法得到语言环境日期格式的字符串表示?根据 iPhone 的语言环境设置,我想知道格式是 yyyy/mm/dd 还是 mm/dd/yyyy。

我找到了更改日期格式或从区域设置格式获取日期的所有方法,但无法弄清楚如何获取实际格式。

使用DateFormatter dateFormat(fromTemplate:options:locale:).

let userFormat = DateFormatter.dateFormat(fromTemplate: "yyyyMMdd", options: 0, locale: Locale.current)

在美国这个 returns MM/dd/yyyy。在德国,这给出 dd.MM.yyyy.

如果您需要获得适当的时间格式,同时考虑到用户选择的 12/24 小时时间格式,请使用 jms 模板。 j 是一个特殊的格式说明符,仅与模板一起使用,即 returns 为小时 hH,具体取决于什么是合适的。


另一种可能的选择是创建一个 DateFormatter,设置所需的 dateStyletimeStyle,然后读取 dateFormat 属性:

var mydf = DateFormatter()
mydf.dateStyle = .long // set as desired
mydf.timeStyle = .full // set as desired
print(mydf.dateFormat)

对于美国来说:

MMMM d, y 'at' h:mm:ss a zzzz

对于德国,这给出:

d. MMMM y 'um' HH:mm:ss zzzz