java - 如何在 Java/Android 的格式化字符串中显示本地化的日期单位?

标签 java android date localization period

假设我有几天:

Period p = Period.ofDays(3);

我想用字符串中的“天”标签格式化句点,以将此字符串作为输出:

// "3 days"

...但是,我想本地化“days”组件,所以我不能使用像下面这样的格式化字符串,否则它只会以英文正确显示:

String.format("%d days", numberOfDays); // Won't localize 'days'

Java/Kotlin/Android 中有哪些 API 可以表示一段时间,例如语言环境中的小时、天、周、年?如果可以让 API 完成,我宁愿不自己本地化这些词。

最佳答案

正如一条评论中所建议的,您可以使用我的库 Time4J并使用以下代码:

Period p = Period.ofDays(3);
Locale loc = Locale.ENGLISH; // or any other supported locale
String formatted = PrettyTime.of(loc).print(p); // 3 days

本教程还包含一个 list of currently supported languages .顺便说一下,java.time.Period 的 Time4J 等价物将是 net.time4j.Duration<CalendarUnit>如果您对规范化或扩展的 ISO 兼容性等其他功能感兴趣。

注意:如果您使用的是 Android,那么您应该使用姊妹库 Time4A而不是 Time4J,但呈现的代码是相同的。

关于java - 如何在 Java/Android 的格式化字符串中显示本地化的日期单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60730647/

相关文章:

java - 查询索引数据库的java代码与查询未索引数据库的java代码相同吗?

java - "settings.gradle (Project Setting)"错误

html - 我可以使用 HTML 输入类型 "date"只收集一年吗?

date - parse.com 在数据浏览器中设置未定义的日期字段

java - 当项目有不同的 Java 编译器版本时会出现任何问题吗?

java - 从 JSON 中获取所有用户并将其放入 TextView

java - 单击另一个 Android 应用程序中的 x 和 y 位置

android - Retrofit 2 从基本 url 中删除主机名后的字符

java - 在 JavaFx 中为 GridPane 设置标签

linux - date -d 无法识别格式 %d-%m-%Y