如何使java日历从周一开始工作日?
我已经编写了代码,它使用Java日历,并从时间戳显示每周的天。但默认日历从星期日(1)开始。我希望它从星期一开始,星期一应该返回1。这是我的密码:如何使java日历从周一开始工作日?,java,calendar,Java,Calendar,我已经编写了代码,它使用Java日历,并从时间戳显示每周的天。但默认日历从星期日(1)开始。我希望它从星期一开始,星期一应该返回1。这是我的密码: Calender c = Calender.getInstance(TimeZone.getInstance("Australia/Sydney")); c.setTimeInMillis(1413831601032L); c.setFirstDayOfWeek(Calender.Monday); System.out.println(c.get(c
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(区域设置)
,或新的GregoriaCalendar(区域设置))
,则将使用系统的默认设置
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()
设置一周的第一天。该方法只能影响月的周的返回值或年的周的返回值。或者一周中的某一天,它什么也不做
参考更多
此外,如果您看到,您将看到天的值是恒定的,如下所示。这就是为什么周一它将返回1,无论一周的第一天设置为什么
公共最终静态int SUNDAY=1
公共最终静态int星期一=2;
公共最终静态int周六=7
根据设置的第一天,您可以执行以下操作并操作数据
[c.get(Calendar.DAY_OF_WEEK) - 1]);
尽量避免使用get返回的原始值。在代码中,应始终对照Calendar类中定义的常量进行检查。这有一个很大的优势,它更可读
考虑以下代码片段
在这里,很难找到一周中哪一天你想做什么动作
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;
}