4

我正在为我的 Android 项目使用joda-time库而不是Calendar。但与日历不同,我面临区域设置语言的问题。

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

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

我怎样才能做到这一点?这是joda-time lib不支持的东西,还是我做错了什么。

4

1 回答 1

3

在Joda-Time 主页查看以下通知

Joda-Time 是 Java SE 8 之前 Java 的事实上的标准日期和时间库。现在要求用户迁移到 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 和 7。如果您正在为 Android 项目工作并且您的 Android API 级别仍然不兼容 Java-8,请通过脱糖和How to use ThreeTenABP in Android Project检查可用的 Java 8+ API

于 2021-02-04T21:32:22.267 回答