如何使Java日历从星期一开始工作日?

rah*_*raj 4 java calendar

我已经编写了代码,该代码使用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));
Run Code Online (Sandbox Code Playgroud)

setFirstDayOfWeek()在这种情况下无济于事。

Tueday的输出应该为2,但显示为3。任何帮助将不胜感激。

Ank*_*hal 6

一周的第一天是从当前语言环境派生的。如果您未设置calendar (Calendar.getInstance(Locale)或new 的语言环境GregorianCalendar(Locale)),它将使用系统的默认设置。

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

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

-Duser.language=en -Duser.country=US -> en_US: 1 (Sunday)
-Duser.language=en -Duser.country=GB -> en_GB: 2 (Monday)
Run Code Online (Sandbox Code Playgroud)

另外,您可以使用该方法setFirstDayOfWeek()设置一周的第一天。该方法只能影响return values of WEEK_OF_MONTHWEEK_OF_YEAR。F 或DAY_OF_WEEK,则不执行任何操作

在这里参考更多

另外,如果看到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]);
Run Code Online (Sandbox Code Playgroud)