Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.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
Ios DateComponents格式删除0小时但不是0分钟_Ios_Swift_Localization_Internationalization_Nsdatecomponentsformatter - Fatal编程技术网

Ios DateComponents格式删除0小时但不是0分钟

Ios DateComponents格式删除0小时但不是0分钟,ios,swift,localization,internationalization,nsdatecomponentsformatter,Ios,Swift,Localization,Internationalization,Nsdatecomponentsformatter,我试图使用datecomponentsformter将秒数格式化为时间字符串HH:MM:SS。我总是想显示分钟和秒字段,但如果小时为0,我不想显示小时。我试着设置 formatter.zeroFormattingBehavior = .dropLeading 但是,如果小时和分钟都为0,这也会导致分钟数下降 目前,我的解决方案如下: if timeElapsed >= 3600 { formatter.allowedUnits = [.second, .minute, .hour

我试图使用
datecomponentsformter
将秒数格式化为时间字符串HH:MM:SS。我总是想显示分钟和秒字段,但如果小时为0,我不想显示小时。我试着设置

formatter.zeroFormattingBehavior = .dropLeading
但是,如果小时和分钟都为0,这也会导致分钟数下降

目前,我的解决方案如下:

if timeElapsed >= 3600 {
    formatter.allowedUnits = [.second, .minute, .hour]
} else {
    formatter.allowedUnits = [.second, .minute]
}
formatter.zeroFormattingBehavior = .pad

但是,我担心这个解决方案很难解决,如果有国际化,不考虑一个小时为3600秒,则不能正常工作。有更好的解决方案吗?

你的
如果
听起来合理,你为什么称之为hacky?一小时是一个标准的计量单位,就像一米。一小时总是有60分钟。这一天有时有23或25个小时(即,对于使用夏令时的国家,在时钟转换日)。我觉得你的解决方案不错。免责声明:如果你想进入原子钟级别,还有一个问题。但在大多数情况下,可以忽略这一点。