gpt4 book ai didi

java - 相同的语言环境在不同的机器上为相同的日期提供不同的周数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:38 24 4
gpt4 key购买 nike

对于 Java 应用程序,周数对最终用户很重要。但是,出于某种原因,对于相同的日期和区域设置,我的机器和最终用户的机器之间的周数不同。

我们都运行 Windows 10 64 位和 jre1.8.0_101

我创建了一个小程序来说明这个问题,它在两台机器上产生了不同的结果。

Calendar calUs = Calendar.getInstance(Locale.US);
String usToday = "this week US: \t\t\t" + calUs.get(Calendar.WEEK_OF_YEAR) + " (should be 35 on 24-8-2016)";

Calendar calDe = Calendar.getInstance(Locale.GERMAN);
String deToday = "this week DE: \t\t\t" + calDe.get(Calendar.WEEK_OF_YEAR) + " (should be 34 on 24-8-2016)";

Calendar calDef = Calendar.getInstance();
String defToday = "this week default default: \t" + calDef.get(Calendar.WEEK_OF_YEAR)
+ " (should be 34 on 24-8-2016)";

System.out.println("Default locale: " + Locale.getDefault() + "\t(should be nl_NL)");
System.out.println(usToday);
System.out.println(deToday);
System.out.println(defToday);

在我的机器上这会产生:

Default locale: nl_NL (should be nl_NL)

this week US: 35 (should be 35 on 24-8-2016)

this week DE: 34 (should be 34 on 24-8-2016)

this week default default: 34 (should be 34 on 24-8-2016)

但对于最终用户,我们看到了错误的结果:

Default locale: nl_NL (should be nl_NL)

this week US: 35 (should be 35 on 24-8-2016)

this week DE: 35 (should be 34 on 24-8-2016)

this week default default: 35 (should be 34 on 24-8-2016)

我已经尝试更改 Windows 注册表中的一周的第一天和一年的第一周设置来尝试重现该问题,但没有成功。在 MS Outlook 中,我们在两台机器上都获得了正确的周数。这使我相信问题以某种方式仅限于 java。

我在这里错过了什么?

最佳答案

我刚刚在我同事的机器上检查了我的 Joda 时间测试程序,它可以正常工作。所以看起来我们将努力改变主程序以使用该库(并且一旦我们到达 Java 8 就可能切换到 Time)

我建议在 Java 中处理周数时不要花太多时间让 Calendar 类合作。

关于java - 相同的语言环境在不同的机器上为相同的日期提供不同的周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122524/

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