DateComponentsFormatter下降零小时但不是零分钟

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

 formatter.zeroFormattingBehavior = .dropLeading 

但是,如果小时和分钟均为0,则会导致分钟被丢弃。

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

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

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