【发布时间】:2019-07-08 13:45:11
【问题描述】:
我可能忽略了一些令人难以置信的显而易见的事情,但为什么会这样:
final Calendar calendar = Calendar.getInstance(Locale.GERMAN);
System.out.println(calendar.getFirstDayOfWeek());
结果
1 (Sunday)
而不是
2 (Monday)
?
在有人声称“一周的第一天是所有讲德语的人的星期日”(again)之前,它是 not:“[D] 是工作日编号,从 1 到 7,从星期一开始,到星期日结束。”
事实上,Locale.GERMANY 的结果是正确的“星期一”。
对于德语语言环境,为什么一周的第一天是星期日?
【问题讨论】:
-
我建议你不要使用
Calendar。该课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time API 的WeekFields。 -
您的代码结果因 Java 版本而异(我可以很容易地在 Java 10 和 11 上重现,而不是在 8 和 9 上)。您可以通过在命令行中设置系统属性
java.locale.providers来进一步控制它,例如-Djava.locale.providers=HOST,COMPAT,CLDR。
标签: java calendar locale dayofweek