如何在 Swift 中呈现本地化日期间隔

How to render a localized date interval in Swift

我需要在两个日期之间渲染一个可以正确本地化的间隔,如下所示:

使用NSDateIntervalFormatterclass.

Swift 游乐场示例:

import Foundation

let dateIntervalFormatter = DateIntervalFormatter()

let fromDate = Date(timeIntervalSinceReferenceDate: -123456789.0)
let toDate = Date()

dateIntervalFormatter.dateTemplate = "d MMM"
dateIntervalFormatter.string(from: fromDate, to: toDate)
// Outputs "Feb 1, 1997 – Jun 5, 2019"

dateIntervalFormatter.dateTemplate = "EEE, MMM d, ''yy"
dateIntervalFormatter.string(from: fromDate, to: toDate)
// Outputs "Sat, Feb 1, 97 – Wed, Jun 5, 19"

dateIntervalFormatter.locale = Locale(identifier: "fr_FR")
dateIntervalFormatter.string(from: fromDate, to: toDate)
// Outputs "sam. 1 févr. 97 – mer. 5 juin 19"

如果要在与当前语言环境不同的语言环境中呈现日期间隔,可以选择设置语言环境,方法是在格式化程序实例上设置 locale 属性。

您可以按照 Unicode Technical Standard #35 中定义的日期格式模式在 dateTemplate 中编写自己的格式。

或者,您可以通过设置 NSDateIntervalFormatter 实例的 dateStyletimeStyle 属性来使用系统预定义的日期和时间样式(有关详细信息,请参阅 NSDateIntervalFormatter Formatter Options预定义格式)。