如何使 java 日历从星期一开始工作日?
How to make java calendar to start weekday from Monday?
我编写了代码,它使用 Java 日历并显示来自时间戳的 DAY_OF_WEEK。但默认日历从星期日 (1) 开始。我希望它从星期一开始,例如。星期一应该 return 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。我们将不胜感激。
一周的第一天来自当前的语言环境。如果不设置日历(Calendar.getInstance(Locale)
或新GregorianCalendar(Locale))
的区域设置,它将使用系统的默认值。
public static void main(String[] args) {
Calendar c = new GregorianCalendar();
System.out.println(Locale.getDefault() + ": " + c.getFirstDayOfWeek());
}
对于 language/country:
,这应该显示具有不同 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_MONTH
或WEEK_OF_YEAR
。 F或DAY_OF_WEEK,它什么都不做。
参考here了解更多
此外,如果您看到 Calendar.java,您会看到天数的值是恒定的,如下所示。所以这就是为什么它会 return 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]);
尽量避免使用get返回的原始值。在您的代码中,您应该始终检查日历 class 中定义的常量。这有一个很大的优势,它更具可读性。
考虑以下片段
在这里很难找到您想在一周中的哪一天执行哪个操作
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;
}
我编写了代码,它使用 Java 日历并显示来自时间戳的 DAY_OF_WEEK。但默认日历从星期日 (1) 开始。我希望它从星期一开始,例如。星期一应该 return 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。我们将不胜感激。
一周的第一天来自当前的语言环境。如果不设置日历(Calendar.getInstance(Locale)
或新GregorianCalendar(Locale))
的区域设置,它将使用系统的默认值。
public static void main(String[] args) {
Calendar c = new GregorianCalendar();
System.out.println(Locale.getDefault() + ": " + c.getFirstDayOfWeek());
}
对于 language/country:
,这应该显示具有不同 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_MONTH
或WEEK_OF_YEAR
。 F或DAY_OF_WEEK,它什么都不做。
参考here了解更多
此外,如果您看到 Calendar.java,您会看到天数的值是恒定的,如下所示。所以这就是为什么它会 return 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]);
尽量避免使用get返回的原始值。在您的代码中,您应该始终检查日历 class 中定义的常量。这有一个很大的优势,它更具可读性。
考虑以下片段
在这里很难找到您想在一周中的哪一天执行哪个操作
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;
}