Calendar#getFirstDayOfWeek()返回错误的值

问题描述 投票:3回答:2

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

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

造成

1  (Sunday)

代替

2 (Monday)

?

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

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

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

java calendar locale dayofweek
2个回答
3
投票

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

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

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


3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.