关于java:Calendar#getFirstDayOfWeek()返回错误的值

Calendar#getFirstDayOfWeek() returns wrong value

我可能忽略了一些令人难以置信的显而易见的事情,但是为什么这样做:

1
2
final Calendar calendar = Calendar.getInstance(Locale.GERMAN);
System.out.println(calendar.getFirstDayOfWeek());

结果

1
1  (Sunday)

而不是

1
2 (Monday)

在有人声称"一周的第一天是所有德语国家的星期天"(再次)之前,不是:" [D]是工作日的数字,从1到7,从头开始以星期一结束,以星期日结束。"

实际上,Locale.GERMANY产生正确的" Monday "。

为什么在德国语言环境中,一周的第一天是星期天?


特定语言的所有默认语言环境,例如Locale.GERMANLocale.FRENCHLocale.ENGLISH默认将未指定的语言环境部分设置为USA。实际上,这些常数代表居住在美国的德语,法语或英语人士。

这个问题可能没有很好的答案,因为仅了解语言还不足以算出一周的第一天。也许因为Java是由一家美国公司针对美国市场开发的,所以默认语言环境值使用美国作为一个国家。

如果需要德语语言环境,请使用另一个答案指出的Locale.GERMANY


您自己回答了这个问题,在您的声明中,您使用的是德语而不是国家/地区的语言环境,请将其更改为

1
 final Calendar calendar = Calendar.getInstance(Locale.GERMANY);

(注意,由于您未更改国家/地区,因此使用了默认国家/地区)。