基本上,我想要的是获取仅以小时表示的时间间隔的值,而不将其四舍五入为整小时(使用NSDateComponentsFormatter对其进行正确格式化和本地化)。我不知道是否误解了NSDateComponentsFormatter.allowsFractionalUnits的使用,但是我无法让格式化程序给我一个十进制值。谁能帮助我发现我的错误,或以什么方式告诉我我对此有误解?
从Apple文档获得关于allowFractionalUnits属性的信息:
Swift示例代码:
let formatter = NSDateComponentsFormatter()
formatter.unitsStyle = .Abbreviated
formatter.allowedUnits = .Hour
formatter.allowsFractionalUnits = true
let onePointFiveHoursInSeconds = NSTimeInterval(1.5 * 60.0 * 60.0)
print(formatter.stringFromTimeInterval(onePointFiveHoursInSeconds)!)
//"1h" instead of expected "1.5h"
Objective-C代码中的相同示例:
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated;
formatter.allowedUnits = NSCalendarUnitHour;
formatter.allowsFractionalUnits = YES;
NSTimeInterval onePointFiveHoursInSeconds = 1.5 * 60.0 * 60.0;
NSLog(@"%@", [formatter stringFromTimeInterval:onePointFiveHoursInSeconds]);
//"1h" instead of expected "1.5h"
更新:
我已经向Apple报告了有关此问题的错误(rdar://22660145)。
最佳答案
根据Open Radar #32024200:
你没有做错任何事。该标志只是被打破。
关于ios - NSDateComponentsFormatter上的allowFractionalUnits我在做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32522965/