我可能会忽略一些令人难以置信的明显事物,但为什么会这样:
final Calendar calendar = Calendar.getInstance(Locale.GERMAN);
System.out.println(calendar.getFirstDayOfWeek());
造成
1 (Sunday)
代替
2 (Monday)
?
在有人声称“一周的第一天是所有讲德语的人的星期天”(again)之前,它是not:“[D]是工作日的数字,从1到7,从星期一开始到星期日结束。”
事实上,Locale.GERMANY
导致正确的“星期一”。
为什么一周的第一天是星期天的德国语言环境?
特定语言的所有默认语言环境,例如Locale.GERMAN
,Locale.FRENCH
,Locale.ENGLISH
默认未指定部分到美国的语言环境。实际上,这些常数代表居住在美国的德语,法语或英语。
这个问题可能没有很好的答案,因为只知道语言不足以弄清楚一周的第一天。也许是因为Java是由美国公司为美国市场开发的,默认的区域设置值使用美国作为国家。
如果您需要德语语言环境,请使用其他答案中指出的Locale.GERMANY
。
您自己回答了这个问题,在您的声明中,您使用的是德语的语言环境,而不是国家/地区,请将其更改为
final Calendar calendar = Calendar.getInstance(Locale.GERMANY);
(注意,由于您没有更改国家/地区,因此使用默认国家/地区)