android 字符串时间格式化,如何在Android上使用本地化时间单位格式化字符串的持续时间?...

我想格式化一个字符串中的持续时间(例如以秒为单位),该字符串将包含时间单位的本地化名称。例如,对于输入8692,我将得到字符串“2小时24分52秒”,其中时间单位正确地针对每种语言进行了本地化。 Android中是否有一些类可以做到这一点?有没有人知道一些外部开源库?谢谢。

答案

我不知道任何开源库,但如果我正确理解了这个问题,那么手工制作它应该不会太难:

public static String foo(int duration) {

int hours = duration/3600;

int minutes = (duration%3600)/60;

int seconds = duration%60;

return hours + getResources().getString(R.string.hours) +

minutes + getResources().getString(R.string.minutes) +

seconds + getResources().getString(R.string.seconds);

}

编辑只是为了完整性:我现在更好地理解您的问题,您不希望手动本地化所有时间单位。 Unicode公共区域设置数据存储库提供了一些(很多,很多)有趣的数据。它们提供了几乎任何你想要本地化的XML数据,例如: de.xml(德国):

Stunden

{0} Stunde

{0} Stunden

{0} pro Stunde

我认为这是矫枉过正,但正如我所说:为了完整性。

另一答案

我这样做了。

val minuteString = systemResources.getString(systemResources.getIdentifier("minute", "string", "android"))

val secondString = systemResources.getString(systemResources.getIdentifier("second", "string", "android"))

val hourString = systemResources.getString(systemResources.getIdentifier("hour", "string", "android"))

val dayString = systemResources.getString(systemResources.getIdentifier("day", "string", "android")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值