【问题标题】:DateIntervalFormatter's dateTemplate not consistent with DateFormatter's dateFormat in SwiftDateIntervalFormatter 的 dateTemplate 与 Swift 中 DateFormatter 的 dateFormat 不一致
【发布时间】:2022-01-12 15:23:25
【问题描述】:

我正在尝试显示使用自定义格式格式化的日期间隔。我使用的格式适用于日期,但与日期间隔一起使用时效果不佳。 我把显示的内容和我的期望作为 cmets。真的有问题还是我的期望是错误的,万一他们错了,为什么会这样?另外,我怎样才能达到预期的部分?

import UIKit

let now = Date()
let tomorrow = now.addingTimeInterval(24.0 * 3600.0)
let dateInterval = DateInterval(start: now, end: tomorrow)

// Initialize Date Interval Formatter
let dateIntervalFormatter = DateIntervalFormatter()
dateIntervalFormatter.dateTemplate = "dd-MM-yyyy"

dateIntervalFormatter.locale = Locale(identifier: "de")
dateIntervalFormatter.string(from: dateInterval)
// displays "12.–13.01.2022"
// expected "12-–13-01-2022"

dateIntervalFormatter.locale = Locale(identifier: "en")
dateIntervalFormatter.string(from: dateInterval)
// displays "1/12/2022 – 1/13/2022"
// expected "12-01-2022 – 13-01-2022"

dateIntervalFormatter.locale = Locale(identifier: "ro")
dateIntervalFormatter.string(from: dateInterval)
// displays "12.01.2022 – 13.01.2022"
// expected "12-01-2022 – 13-01-2022"

let formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
formatter.locale = Locale(identifier: "de")
let formatedTime = formatter.string(from: Date())
// displays "12-01-2022"
// expected "12-01-2022"

【问题讨论】:

  • 您使用的是template,而不是format,这就是原因。在DateFormatter 示例中,如果您使用formatter.setLocalizedDateFormatFromTemplate("ddMMyyy") 而不是formatter.dateFormat = "dd-MM-yyyy"formatter.dateFormat = "dd-MM-yyyy",您可能会看到它。此外,模板不需要“-”,它不会翻译它们。
  • @Larme 好的,我明白了,有没有办法达到我的预期?
  • 你应该在设置日期格式之前设置语言环境
  • @LeoDabus for dateformatter 它工作正常,没有问题,dateinterval 是问题,我怎样才能让它不忽略“-”
  • 如果您不想本地化,请使用固定的语言环境“en_US_POSIX”

标签: ios swift date dateformatter dateinterval


【解决方案1】:

基于语言环境/模板的格式意味着“我向您提供详细信息”,因此 DateIntervalFormatter 会根据语言环境做自己喜欢的事情。另一方面,DateFormatter 示例不是基于语言环境/模板的,因此您可以获得您提供的格式(不是模板)中指定的内容。

【讨论】:

  • 好的,我明白了,那我怎样才能达到我的预期呢?
猜你喜欢
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多