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

时间:2016-01-06 18:02:15

标签: ios7 unicode ios8 localization nsdateformatter

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

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

但阅读该文件后,我对如何获得“年”,“年”,“月”,“月”等词语并不清楚......

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

1 个答案:

答案 0 :(得分:1)

使用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进行本地化。还有其他方法可以从(例如)时间间隔而不是两个日期对象中获取字符串。