我的应用程序以hh:mm:ss格式显示剩余时间,例如01:05:45,表示一小时5分45秒。
当小时或分钟为零时,我不想显示它们。目前,如果还剩45秒,我的计时器将显示“ 00:00:45”。预期结果仅为“ 45”。
我需要某种Java / Kotlin / Android方法来产生以下输出:
目前,我使用这样的字符串作为格式化程序:
<string name="time_default_formatter" translatable="false">%02d:%02d:%02d</string>
我尝试将字符串“ 00:”手动替换为“”,但在第三个示例中却失败了。另外,我认为标准格式应该提供类似的内容,但是我一直找不到它。
编辑:我可以用代码来完成。问题是我正在寻找一种优雅的解决方案。
答案 0 :(得分:1)
字符串资源用于以易于本地化的方式显示实际文本。它们并不用于格式化日期和时间;这就是DateUtils
的目的。
此类包含用于创建文本的各种与日期有关的实用程序 对于经过的时间和日期范围之类的内容, 周和月,以及AM / PM文本等。
其中带有便捷的formatElapsedTime()
方法;会按照您期望的格式设置持续时间。
将经过的时间格式设置为“ MM:SS”或“ H:MM:SS”…
很遗憾,您提到的最后一种格式(仅显示秒)很少见,因此DateUtils
不支持。尽管可以通过以下功能轻松解决此问题。
fun formatDuration(seconds: Long): String = if (seconds < 60) {
seconds.toString()
} else {
DateUtils.formatElapsedTime(seconds)
}
答案 1 :(得分:0)
到目前为止,我还没有在意见解决方案中找到任何优雅的方法,我是那样做的。
我有3个格式化字符串,每种情况下一个:
docker socket
然后,我使用功能(在Kotlin中)手动对其进行格式化:
localhost