android - 如何在 Android 上将持续时间格式化为具有本地化时间单位的字符串?

标签 android time formatting

我想在一个字符串中格式化一个持续时间(例如以秒为单位),该字符串将包含时间单位的本地化名称。例如,对于输入 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/

相关文章:

java - Eclipse EE 格式错误

r - 如何使用 R 的 sprintf 创建固定宽度的字符串,并在 END 处填充空白?

android - 信号 TabHost 以重新加载 View

java - 自定义 Joda-Time Chronologies 是否有好的资源?

java - 当我想以毫秒为单位获取 unix 时间时,Mongodb 时间戳输出格式返回 "$numberLong"对象

c++ - 分析 "Sleep"函数的测量时间

python 错误: 'str' object has no attribute 'upper()'

android - 如何从 Firebase 控制台使用自定义点击操作发送推送通知

android - 有没有办法让Android标签滑动?

android - Gradle 找不到 Android Compose 编译器