gpt4 book ai didi

java - 本地化数字和日期格式,但不本地化数字符号

转载 作者:行者123 更新时间:2023-12-01 19:29:35 24 4
gpt4 key购买 nike

我有一个用例,我想根据用户区域设置显示日期和数字。

我分别使用 DateFormat.getDateInstance(DateFormat.MEDIUM, locale) 和 NumberFormat.getNumberInstance(locale) 。

我面临的问题是,DateFormat 和 NumberFormat 也会根据区域设置更改数字,这不是我想要的。希望最终字符串仅使用阿拉伯数字 (0-9)。

例如,

对于一个值,53.54在 hi_IN 中,它变成 ५३.५४

在 de_DE 中,它变为 53,54

而我希望它是这样的,

在 hi_IN,53.54

在 de_DE,53,54

是否使用.或 ,因为小数分隔符应基于区域设置,但数字应为阿拉伯语。在日期转换中面临类似的问题。

感谢任何帮助!

最佳答案

虽然我无法重现您所描述的行为,但我可以向您展示如何控制格式化程序使用的数字。

    NumberFormat nf = NumberFormat.getNumberInstance();
if (nf instanceof DecimalFormat) {
DecimalFormat df = (DecimalFormat) nf;

// Hindi digits
char ch0 = '\u0966'; // Hindi zero
DecimalFormatSymbols symbols = df.getDecimalFormatSymbols();
symbols.setZeroDigit(ch0);
df.setDecimalFormatSymbols(symbols);
System.out.println(nf.format(53.54));

// Western digits
symbols.setZeroDigit('0'); // Western zero
df.setDecimalFormatSymbols(symbols);
System.out.println(nf.format(53.54));
} else {
System.out.println("Cannot control digits for this formatter");
}

在我的计算机上,此代码段的输出是:

५३.५४
53.54

我们只指定零位数字,即用于 0 的字符。格式化程序从中计算出其他数字本身。

对于格式化日期,我强烈推荐 java.time、现代 Java 日期和时间 API 及其 DateTimeFormatter

    DateTimeFormatter dateFormatter = DateTimeFormatter
.ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.GERMAN);

// Hindi digits
DecimalStyle style = dateFormatter.getDecimalStyle().withZeroDigit(ch0);
DateTimeFormatter hindiDateFormatter = dateFormatter.withDecimalStyle(style);
System.out.println(LocalDate.now(ZoneId.of("Europe/Vienna")).format(hindiDateFormatter));

// Western digits
style = dateFormatter.getDecimalStyle().withZeroDigit('0');
DateTimeFormatter westernDateFormatter = dateFormatter.withDecimalStyle(style);
System.out.println(LocalDate.now(ZoneId.of("Europe/Zurich")).format(westernDateFormatter));
१२.१२.१९
12.12.19

您尝试在问题中使用的 DateFormat 类非常麻烦且早已过时。

链接: Oracle tutorial: Date Time解释如何使用 java.time。

关于java - 本地化数字和日期格式,但不本地化数字符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59273380/

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