gpt4 book ai didi

java - 以下 DateFormat 是否能够生成与语言环境无关的日期字符串

转载 作者:太空狗 更新时间:2023-10-29 14:52:04 24 4
gpt4 key购买 nike

我的理想方式是使用以下代码来获得独立于语言环境的日期字符串

DateFormat dateFormat = new SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH);

这意味着,如果我在阿拉伯设备或美国设备上运行上述代码,两者都会生成相同的字符串。

对于上述情况,dateFormat.format(date) 将产生 2015 年 12 月 26 日

我遇到了一个遗留代码,它使用以下方式生成与语言环境无关的日期字符串。

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ENGLISH);

以上代码是否真正独立于语言环境。它会“错误地”生成类似 26 Dec, 2015 的字符串吗?

我写了一个简单的代码,在 Windows 和 Android 设备上进行测试。

for (Locale locale : Locale.getAvailableLocales()) {
Locale.setDefault(locale);
DateFormat dateFormat0 = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ENGLISH);
DateFormat dateFormat1 = new SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH);

if (false == dateFormat0.format(date).equals(dateFormat1.format(date))) {
throw new java.lang.RuntimeException("Opps");
}
}

没有抛出异常。

我想知道,我们是否可以假设 DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ENGLISH) 也会在不同设备上生成相同的日期字符串?有没有我没有处理的极端情况?

最佳答案

使用"MMM dd, yyyy"您可以保留对输出的控制,而通过使用整数常量DateFormat.DEFAULT,您可以将其留给语言环境定义该平台。对于任何给定的语言环境,它们应该在这些平台上是相同的,但实际上并不能保证。

DateFormat.DEFAULT 参数仅在您使用不同的语言环境时才有用,因为它将允许 DateFormat 创建正确的本地化日期字符串。

示例:

DateFormat dfEn = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ENGLISH);
DateFormat dfFr = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.FRENCH);
DateFormat dfGe = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.GERMAN);

System.out.println("ENGLISH: " + dfEn.format(date));
System.out.println("FRENCH : " + dfFr.format(date));
System.out.println("GERMAN : " + dfGe.format(date));

打印:

ENGLISH: Dec 26, 2015
FRENCH : 26 déc. 2015
GERMAN : 26.12.2015

关于java - 以下 DateFormat 是否能够生成与语言环境无关的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34464667/

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