代码之家  ›  专栏  ›  技术社区  ›  Stefan S.

Calendar 35; getFirstDayOfWeek()返回错误值

  •  2
  • Stefan S.  · 技术社区  · 6 年前

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

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

    导致

    1  (Sunday)
    

    而不是

    2 (Monday)
    

    ?

    在有人说“一周的第一天是所有讲德语的人的星期天”之前( again ),它是 not : 是工作日编号,从1到7,从星期一开始,到星期日结束

    事实上, Locale.GERMANY 结果是正确的“星期一”。

    为什么一周的第一天对于一个德国人来说是星期天?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Karol Dowbecki    6 年前

    特定语言的所有默认区域设置,例如。 Locale.GERMAN , Locale.FRENCH , Locale.ENGLISH 默认为美国地区的未指定部分。实际上,这些常量表示居住在美国的德语、法语或英语人士。

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

    如果你需要德语语言环境 Locale.GERMANY 正如另一个答案所指出的。

        2
  •  3
  •   Joakim Danielson    6 年前

    你自己也回答了这个问题,在你的声明中,你使用了德语的语言环境,而不是国家,把它改成

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

    (注意,因为您没有更改国家,所以它使用默认国家)