gpt4 book ai didi

java - Joda 可以使用阿拉伯数字格式化阿拉伯语言环境的日期吗?

转载 作者:行者123 更新时间:2023-11-30 08:21:34 26 4
gpt4 key购买 nike

到目前为止的故事......

我们厌倦了 Java 的 Date API 通常很糟糕,最终采用了 Joda Time,它工作得更加理智(尽管它并不完美。)

最近我们注意到 Java 的 NumberFormat 中与阿拉伯语区域设置有关的问题。本质上,它使用“拉丁”数字而不是更自然的“阿拉伯”数字。所以我一直在采用 ICU 的格式化程序作为 Java 的直接替代品。

现在我注意到 Joda 的日期格式化程序也以拉丁文打印数字。例如,如果您采用以下程序:

import java.util.Date;
import java.util.Locale;

import com.ibm.icu.text.DateFormat;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.junit.Test;

public class TestJoda {
@Test
public void test() {
Locale locale = new Locale("ar", "SA");

DateFormat icuDateFormat = DateFormat.getDateTimeInstance(
DateFormat.LONG, DateFormat.LONG, locale);
System.out.println("ICU: " + icuDateFormat.format(new Date()));

DateTimeFormatter jodaDateTimeFormatter =
DateTimeFormat.longDateTime().withLocale(locale);
System.out.println("Joda: " + jodaDateTimeFormatter.print(DateTime.now()));
}
}

输出如下:

ICU: ٤ أغسطس، ٢٠١٤ ٥:٠٧:١٤ م جرينتش+١٠
Joda: 04 أغسطس, 2014 EST 05:07:14 م

有没有办法强制 Joda 的格式化程序输出与 ICU 一致的样式?

我想在最坏的情况下会有一种方法来实现某种类型的适配器,但 Joda 类的优点之一是它们的不变性,不幸的是,ICU 采纳这一特性的速度很慢。

最佳答案

Joda 只支持 ASCII 数字,它是硬编码的。

您始终可以使用 String.replace,和/或将 DateTimeFormatter 包装到代理中。

关于java - Joda 可以使用阿拉伯数字格式化阿拉伯语言环境的日期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25113504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com