这是日期格式化程序设置:
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .medium
预期产出:
Aug 13, 2017 6:04:11 PM
当前输出:
Aug 13, 2017 at 6:04:11 PM
如何在不指定格式字符串的情况下理想地删除'at'字样,它来自何处?
奥地利德语语言环境:
dateFormatter.locale = Locale(identifier: "de_AT")
13.08.2017, 18:04:11
使用美国英语语言环境:
dateFormatter.locale = Locale(identifier: "en_US")
Aug 13, 2017 at 6:04:11 PM
答案 0 :(得分:4)
一种选择是进行两次单独的转换,一次
仅设置dateStyle = .medium
,仅设置一个设置
timeStyle = .medium
,然后连接结果。但我不知道
如果是
<date><space><time>
格式在所有语言和区域设置中都有意义。
更好的方法是使用setLocalizedDateFormatFromTemplate
:
dateFormatter.setLocalizedDateFormatFromTemplate("MMM dd yyyy jj:mm:ss")
这接近你想要的,并保证给你一个 所有区域设置的合理结果。这里有一些例子。
en_US: Aug 13, 2017, 6:33:54 PM de: 13. Aug. 2017, 18:33:54 ja: 2017年8月13日 18:33:54
请注意小时使用jj
格式,这将被解释
作为HH
(24小时格式)或hh
(12小时AM / PM格式),取决于
在当地。
答案 1 :(得分:-3)
您可以将其写入字符串并使用text.Replace将其替换为空。
答案 2 :(得分:-3)
您可以使用
实现预期的输出 dateFormatter.dateFormat = "MMM dd, yyyy h:mm:ss a"
。
由于当前的语言环境,at
单词放在那里,所以如果你想要删除所有语言环境,你应该指定确切的日期格式,如上所示。