Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将NSTimeInterval转换为“中的字符串”;1w 3d 4h 15m 21s“;格式,区域设置友好?_Objective C_Cocoa_Localization - Fatal编程技术网

Objective c 将NSTimeInterval转换为“中的字符串”;1w 3d 4h 15m 21s“;格式,区域设置友好?

Objective 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

我想将NSTimeInterval转换为如下格式

1w 3d 4h 15m 21s


我如何以对区域设置友好的方式实现这一点?是否有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格式不是默认为设备的当前语言环境吗?它默认为当前语言环境,但您可以覆盖它,就像我在回答中的代码一样。