我想在一个字符串中格式化一个持续时间(例如以秒为单位),该字符串将包含时间单位的本地化名称。例如,对于输入 8692,我会得到字符串“2 h 24 min 52 sec”,其中时间单位已为每种语言正确本地化。 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);
}
然后您在 strings.xml
中定义这些字符串并像往常一样本地化它们。 (见 http://developer.android.com/guide/topics/resources/localization.html)
对于 Android,您可以使用 Duration
类 ( http://developer.android.com/reference/javax/xml/datatype/Duration.html ),但它的 toString()
方法并不完全符合您的要求。
编辑只是为了完整性:我现在更好地理解了您的问题,您不想手动本地化所有时间单位。 Unicode Common Locale Data Repository 提供了一些(嗯,很多)有趣的数据。它们提供几乎所有您可能想要本地化的 XML 数据,例如de.xml
(德语):
<unit type="duration-hour">
<displayName>Stunden</displayName>
<unitPattern count="one">{0} Stunde</unitPattern>
<unitPattern count="other">{0} Stunden</unitPattern>
<perUnitPattern>{0} pro Stunde</perUnitPattern>
</unit>
我认为这是矫枉过正,但正如我所说:为了完整性。
关于android - 如何在 Android 上将持续时间格式化为具有本地化时间单位的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182821/