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