枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述如何在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);
}
【如何在Android上使用本地化时间单位格式化字符串的持续时间()】然后在
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公共区域设置数据存储库提供了一些(很多,很多)有趣的数据。它们提供了几乎任何你想要本地化的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>
我认为这是矫枉过正,但正如我所说:为了完整性。
另一答案我这样做了。
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")
在此文件中,您可以查找其他时间单位资源https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/strings.xml
推荐阅读
- 谷歌硬盘中App Data文件夹的未来是什么()
- 为什么会出现此错误“com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException”
- DriveApp |获取文件的查看者和评论者
- 如何从webapp重定向到Google云端硬盘应用
- 列出来自Google云端硬盘的文件,并获取Android中所选文件的downloadUrl
- 继续在Android上使用旧的Google云端硬盘API
- Jackson XML Mapper为列表编写两次元素名称
- JAXB ClassNotFoundException使用Java 11构建Spring Boot App 2.2.0
- Android - 在寻呼机中获取片段的上下文