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