【问题标题】:How to make java calendar to start weekday from Monday?如何使java日历从星期一开始工作日?
【发布时间】:2015-01-19 17:42:52
【问题描述】:

我编写了代码,它使用 Java 日历并显示时间戳中的 DAY_OF_WEEK。但默认日历从星期日 (1) 开始。我希望它从星期一开始,例如。它应该在星期一返回 1。这是我的代码:

Calender c = Calender.getInstance(TimeZone.getInstance("Australia/Sydney"));
c.setTimeInMillis(1413831601032L);
c.setFirstDayOfWeek(Calender.Monday);
System.out.println(c.get(c.DAY_OF_WEEK));

setFirstDayOfWeek() 在这种情况下没有帮助。

星期二的输出应该是 2,但它显示我是 3。任何帮助将不胜感激。

【问题讨论】:

    标签: java calendar


    【解决方案1】:

    一周的第一天来自当前语言环境。如果你没有设置日历(Calendar.getInstance(Locale)或新的GregorianCalendar(Locale))的区域设置,它将使用系统的默认值。

    public static void main(String[] args) {
        Calendar c = new GregorianCalendar();
        System.out.println(Locale.getDefault() + ": " + c.getFirstDayOfWeek());
    }
    

    这应该显示不同的输出,不同的 JVM 参数用于语言/国家:

    -Duser.language=en -Duser.country=US -> en_US: 1 (Sunday)
    -Duser.language=en -Duser.country=GB -> en_GB: 2 (Monday)
    

    另外,您可以使用setFirstDayOfWeek() 方法设置一周的第一天。该方法只能影响return values of WEEK_OF_MONTHWEEK_OF_YEAR。 F或 DAY_OF_WEEK,什么都不做

    更多信息请参考here

    此外,如果您看到 Calendar.java,您将看到天数的值是恒定的,如下所示。所以这就是为什么它会在星期一返回 1,不管一周的第一天是什么设置。

    public final static int SUNDAY = 1;

    public final static int MONDAY = 2; ....

    public final static int SATURDAY = 7;

    您可以根据您设置的第一天执行以下操作并操作数据。

    [c.get(Calendar.DAY_OF_WEEK) - 1]);
    

    【讨论】:

      【解决方案2】:

      尽量避免使用 get 返回的原始值。在您的代码中,您应该始终检查 Calendar 类中定义的常量。这有一个很大的优势,它更具可读性。

      考虑跟随sn-ps

      在这里很难找到您想要在一周中的哪一天执行哪个操作

      switch (c.get(Calendar.DAY_OF_WEEK)) {
          case 2: 
              // do something
              ; break;
          case 3: 
              // do something
              break;
      
      }
      

      这个例子更不言自明

      switch (c.get(Calendar.DAY_OF_WEEK)) {
          case Calendar.MONDAY: 
              // do something
              ; break;
          case Calendar.TUESDAY: 
              // do something
              break;
      
      }
      

      【讨论】:

        猜你喜欢
        • 2023-01-12
        • 1970-01-01
        • 2020-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-11
        • 2018-01-22
        相关资源
        最近更新 更多