DateComponentsFormatter 减少零小时但不减少零分钟

kme*_*l96 6 localization internationalization ios swift nsdatecomponentsformatter

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

formatter.zeroFormattingBehavior = .dropLeading
Run Code Online (Sandbox Code Playgroud)

但是,如果小时和分钟都是 0,这也会导致分钟数被删除。

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

if timeElapsed >= 3600 {
    formatter.allowedUnits = [.second, .minute, .hour]
} else {
    formatter.allowedUnits = [.second, .minute]
}
formatter.zeroFormattingBehavior = .pad
Run Code Online (Sandbox Code Playgroud)

但是,我担心这个解决方案非常笨拙,如果有一些国际化不认为一小时是 3600 秒,则该解决方案将无法正常工作。有更好的解决方案吗?