使用 NSDateIntervalFormatter(或类似的)获得“1 年零 2 个月”

Using NSDateIntervalFormatter (or similar) to get "1 year and 2 months"

是否可以使用 NSDateIntervalFormatter 或类似的方法来获得正确(自动)本地化的字符串,例如“1 年零 2 个月”或“1 年,2 个月”或类似的字符串?

我想我必须使用 dateTemplate 方法并使用以下方法设置它: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

但是读了那个文档,我对如何得到单词"year"、"years"、"month"、"months"没有一个清晰的概念...

基本上,我想在世界各地使用的应用程序中使用月份和年份显示本地化时间间隔。 有什么建议吗?我想避免手动操作。

使用NSDateComponentsFormatter。例如:

let now = NSDate()
let past = NSDate(timeIntervalSinceNow: -100000000)

let formatter = NSDateComponentsFormatter()
formatter.unitsStyle = NSDateComponentsFormatterUnitsStyle.Full
formatter.allowedUnits = [NSCalendarUnit.Year, NSCalendarUnit.Month]

let intervalString = formatter.stringFromDate(past, toDate: now)

对于这两个日期,intervalString 现在是“3 年零 2 个月”,并且将由 iOS 进行本地化。还有其他方法可以从(例如)时间间隔而不是两个日期对象中获取字符串。