当前位置: 代码迷 >> java >> Calendar#getFirstDayOfWeek()返回错误的值
  详细解决方案

Calendar#getFirstDayOfWeek()返回错误的值

热度:46   发布时间:2023-07-31 11:56:35.0

我可能会忽略一些令人难以置信的明显事物,但为什么会这样:

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

造成

1  (Sunday)

代替

2 (Monday)

在有人声称“一周的第一天是所有讲德语的人的星期天”( )之前,它 : “[D]是工作日的数字,从1到7,从星期一开始到星期日结束。”

事实上, Locale.GERMANY产生正确的“星期一”。

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

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

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

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

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

这个问题可能没有好的答案,因为只知道语言不足以弄清楚一周的第一天。 也许是因为Java是由美国公司为美国市场开发的,默认的区域设置值使用美国作为国家。

如果您需要德语语言环境,请使用Locale.GERMANY如其他答案所指出的那样。

  相关解决方案