【发布时间】:2019-04-20 15:37:12
【问题描述】:
当使用 Foundation 的 DateFormatter 为区域设置“de”从模板生成日期格式时,如下所示:
let locale: Locale = Locale(identifier: "de")
let format = DateFormatter.dateFormat(fromTemplate: "dMMMyGhhmmss",
options: 0,
locale: locale)
我总是得到这种格式:
d. MMM y G, h:mm:ss a
渲染
17. Nov. 2018 n. Chr., 8:30:20 PM
'PM' 部分对于区域设置“de”来说是不寻常的,但据我了解,此方法还考虑了用户偏好。对吗?
我玩过系统偏好设置中的设置,例如切换到 24 小时制,但我所做的任何更改都没有任何效果。是否必须重新启动某些内容才能使更改生效?
谁能给我解释一下这是怎么回事?
【问题讨论】:
-
在您的模板中将
h更改为H。 -
@rmaddy 然后它还使用 24 小时格式的区域设置“en”。但是,您的评论提示我再次检查规范,我发现我可以将
h替换为j,这会导致格式生成器根据语言环境选择h或H。 -
很好的发现。我总是忘记
j。这应该与这样的模板一起使用。您应该发布自己的答案,解释为什么j是正确的解决方案。
标签: swift date foundation