5

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

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
4

3 回答 3

8

一种选择是进行两次单独的转换,一种是仅设置,另一种是仅dateStyle = .medium设置 timeStyle = .medium,然后连接结果。但不知道有没有

<date><space><time>

格式在所有语言和地区都有意义。

更好的方法是使用setLocalizedDateFormatFromTemplate

dateFormatter.setLocalizedDateFormatFromTemplate("MMM dd yyyy jj:mm:ss")

这接近您想要的,并且保证为所有语言环境设置提供合理的结果。这里有一些例子。

en_US:2017 年 8 月 13 日下午 6:33:54
发布时间:2017 年 8 月 13 日,18:33:54
ja: 2017年8月13日18:33:54

请注意小时格式的用法jj,这将被解释为HH(24 小时格式)或hh(12 小时 AM/PM 格式),具体取决于区域设置。

于 2017-08-13T16:44:01.807 回答
-2

您可以将其写入字符串并使用 text.Replace 将其替换为空。

于 2017-08-13T16:15:05.417 回答
-4

您可以使用

dateFormatter.dateFormat = "MMM dd, yyyy h:mm:ss a".

由于当前的语言环境,这个at词被放在那里,所以如果你想为所有语言环境去掉它,你应该指定确切的日期格式,如上所示。

于 2017-08-13T16:21:27.630 回答