如何格式化本地化的持续时间,例如“1分30秒”?

问题描述 投票:0回答:1

有没有办法在 Kotlin 或 Java 中格式化本地化的持续时间?我有一个持续时间,我想以本地化的、人类可读的字符串显示它,例如“1 分钟 30 秒”或“1m 30s”。

我确实找到了RelativeDateTimeFormatter,但它似乎只生成将来时或过去时的时间部分,例如“1分钟前”或“1分钟内”。有没有办法配置它来生成现在时?

java kotlin datetime date-formatting duration
1个回答
0
投票

调试

RelativeDateTimeFormatter
的 ICU 使用情况后,我找到了这个解决方案:

val measureFormat = android.icu.text.MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE)
val minutes = measureFormat.formatMeasures(Measure(1, MeasureUnit.MINUTE))
val seconds = measureFormat.formatMeasures(Measure(30, MeasureUnit.SECOND))
val result = "$minutes $seconds"

结果:

1 minute 30 seconds

注意

measureFormat.formatMeasures($SECOND, $MINUTE)
结果为
1 minute, 30 seconds

© www.soinside.com 2019 - 2024. All rights reserved.