有没有办法在 Kotlin 或 Java 中格式化本地化的持续时间?我有一个持续时间,我想以本地化的、人类可读的字符串显示它,例如“1 分钟 30 秒”或“1m 30s”。
我确实找到了RelativeDateTimeFormatter,但它似乎只生成将来时或过去时的时间部分,例如“1分钟前”或“1分钟内”。有没有办法配置它来生成现在时?
调试
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