joda-time 库模式“d”未翻译语言环境

joda-time library pattern "d" not translating locale language

提问人:Rashid Al Shafee 提问时间:1/21/2021 最后编辑:dreamcrashRashid Al Shafee 更新时间:2/5/2021 访问量:178

问:

我正在为我的 Android 项目使用 joda-time 库而不是日历。但与日历不同的是,我面临着语言环境语言的问题。

根据系统/设备语言,所有类型的文本都在翻译,但“d”模式没有翻译,它始终保持英语。

就像使用“d”模式一样,如果变量是 15,对于英语语言环境,它是:15, 但对于阿拉伯语语言环境,它仍然是:15,它应该转换为阿拉伯语 15 (١٥)。它不是翻译。

我该怎么做?这是 joda-time lib 不支持的,还是我做错了什么。

Android 语言环境 android-jodatime

评论


答:

3赞 Arvind Kumar Avinash 2/5/2021 #1

Joda-Time的主页上查看以下通知

Joda-Time 是 Java 事实上的标准日期和时间库 Java SE 8 之前的版本。现在要求用户迁移到 java.time (JSR-310)。

使用新式日期时间 API:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        DateTimeFormatter dtfArabic = DateTimeFormatter.ISO_DATE.localizedBy(Locale.forLanguageTag("ar-SA"));
        System.out.println(date.format(dtfArabic));
    }
}

输出:

٢٠٢١-٠٢-٠٤

Trail: Date Time 了解有关新式日期时间 API 的更多信息。

无论出于何种原因,如果你必须坚持使用Java 6或Java 7,你可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到Java 6和Java 7。如果您正在为 Android 项目工作,并且您的 Android API 级别仍然不符合 Java-8,请查看通过脱糖提供的 Java 8+ API如何在 Android 项目中使用 ThreeTenABP