如何从格式化日期字符串中删除'at'?

时间:2017-08-13 16:12:43

标签: swift nsdateformatter dateformatter

这是日期格式化程序设置:

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

3 个答案:

答案 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单词放在那里,所以如果你想要删除所有语言环境,你应该指定确切的日期格式,如上所示。