Objective c 将NSTimeInterval转换为“中的字符串”;1w 3d 4h 15m 21s“;格式,区域设置友好?
我想将NSTimeInterval转换为如下格式 1w 3d 4h 15m 21sObjective c 将NSTimeInterval转换为“中的字符串”;1w 3d 4h 15m 21s“;格式,区域设置友好?,objective-c,cocoa,localization,Objective C,Cocoa,Localization,我想将NSTimeInterval转换为如下格式 1w 3d 4h 15m 21s 我如何以对区域设置友好的方式实现这一点?是否有cocoa API来执行此操作,或者至少有方法在用户的区域设置中获取“w”、“d”、“h”、“m”、“s”?nsDateComponents格式就是您想要的。它可能不会产生你想要的东西,但我的印象是它的目标是产生符合ICU标准惯例的输出。例如,考虑这一点: NSDateComponentsFormatter* dcf = [[NSDateComponentsForma
我如何以对区域设置友好的方式实现这一点?是否有cocoa API来执行此操作,或者至少有方法在用户的区域设置中获取“w”、“d”、“h”、“m”、“s”?nsDateComponents格式就是您想要的。它可能不会产生你想要的东西,但我的印象是它的目标是产生符合ICU标准惯例的输出。例如,考虑这一点:
NSDateComponentsFormatter* dcf = [[NSDateComponentsFormatter alloc] init];
dcf.unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated;
NSCalendar* cal = [NSCalendar calendarWithIdentifier: NSCalendarIdentifierGregorian];
cal.locale = [NSLocale localeWithLocaleIdentifier: @"es_ES"]; // Spanish locale for Spain
dcf.calendar = cal;
NSLog(@"%@", [dcf stringFromTimeInterval: 1000000]);
…产生:
1 semana, 4 d, 13 h, 46 min, 40 s
因此,这与您的示例格式稍有不同,但我的猜测是,在ICU unicode标准文档中的某个深处,指定了如果间隔既有周又有秒,那么您将获得周的“semana”,而不是“s”。不过我不会为了找到那份文件而折磨自己
所以,如果你在寻找重症监护室的解决方案,就是这个。如果你在寻找不同的东西,你可能会被困在自己的滚动中。还请注意,有几种不同的“单元样式”,因此您也可以尝试其他样式,并选择最适合您情况的样式。您的意思是说,在西班牙语中,对区域设置友好的结果是:1s 3d 4h 15m 21s?注:(semana=周,dia=日,minuto=分钟,Segundo=秒)是的,完全正确。类似于
NSDateFormatter
也将使用本地化格式和语言。您始终可以使用替换变量构造字符串,并根据需要进行翻译。nsdatecomponents格式不是默认为设备的当前语言环境吗?它默认为当前语言环境,但您可以覆盖它,就像我在回答中的代码一样。