【发布时间】: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