【问题标题】:Format date string to german string representation [closed]将日期字符串格式化为德语字符串表示[关闭]
【发布时间】:2019-08-21 12:41:25
【问题描述】:

我有一个字符串Fri, 16 Aug 2019 07:04:12 +0000,我想将其转换为德语字符串表示16.8.2019 07:04:12

如何在 Swift 4 中做到这一点?

非常感谢

【问题讨论】:

  • 抱歉,它不是代码编写服务。请编辑您的问题,发布您尝试过的内容以及您面临的问题。
  • 请注意,您不应选择将显示给用户的日期格式。考虑到用户设备和区域设置,它应该(大部分时间)显示
  • 您的问题有两个步骤 1. 将字符串解析为Date,您可以在SO 上找到很多次。 2. 使用DateFormatter 格式化Date,设置特定的语言环境。不需要其他任何东西。

标签: swift string date


【解决方案1】:

通常我们使用 DateFormatter 来解析和格式化日期。试试这个代码。

let inputDateString = "Fri, 16 Aug 2019 07:04:12 +0000"

let formatter = DateFormatter()
formatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"
formatter.timeZone = TimeZone(secondsFromGMT: 0)

let inputDate = formatter.date(from: inputDateString)

let germanDateFormatter = DateFormatter()
germanDateFormatter.dateFormat = "d.M.yyyy HH:mm:ss"
germanDateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

if let date = inputDate {

    let result = germanDateFormatter.string(from: date)

    print(result) //16.8.2019 07:04:12
}

您还可以使用此服务查找常用日期格式https://nsdateformatter.com

根据 cmets 中的建议,您可以使用 Locale 根据用户 Locale 来格式化日期。但是你会得到你需要的另一种格式。

let inputDateString = "Fri, 16 Aug 2019 07:04:12 +0000"

let formatter = DateFormatter()
formatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"
formatter.timeZone = TimeZone(secondsFromGMT: 0)

let inputDate = formatter.date(from: inputDateString)

let germanDateFormatter = DateFormatter()
germanDateFormatter.locale = .init(identifier: "de")
germanDateFormatter.dateStyle = .short
germanDateFormatter.timeStyle = .medium
germanDateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

if let date = inputDate {

    let result = germanDateFormatter.string(from: date)

    print(result) //16.08.19, 07:04:12
}

【讨论】:

  • 永远不要在解析和编码之外明确地编写格式化字符串。只需将语言环境设置为de 并让系统为您格式化,或从模式生成格式化字符串。在这种情况下为格式化程序设置时区可能也是错误的,您必须为解析器设置 POSIX 语言环境。
  • @Sulthan,我编写了符合要求的代码。问题是如何将一种格式转换为另一种格式。我不确定德语语言环境是否有确切要求的格式。
  • 确实如此。这就是问题的目的。尽管如此,除非您将解析器语言环境设置为 POSIX,否则您的解析将在大多数设备上失败。
猜你喜欢
  • 2015-06-24
  • 2012-02-14
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多