为什么Calendar类DAY_OF_WEEK返回值和现实有差别?

import java.util.Calendar;
import java.util.GregorianCalendar;

public class TestCalendar {
	public static void main(String[] args) {
		//获得日期的相关元素
		Calendar calendar = new GregorianCalendar(2021,3,9,15,9,50);
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DATE);  //也可以使用DAY_OF_MONTH;
		int weekday = calendar.get(Calendar.DAY_OF_WEEK); 
		System.out.println(year);
		System.out.println(month);      //0-11表示对应的月份。0是1月,1是2月。。。11是12月
		System.out.println(day);
		System.out.println(weekday);
	
	}
}

 2021年3月10日,星期三,但是DAY_OF_WEEK返回值为7(下图),实际应返回4,

 

import java.util.Calendar;
import java.util.GregorianCalendar;

public class TestCalendar {
	public static void main(String[] args) {
		//获得日期的相关元素
		Calendar calendar = new GregorianCalendar(2021,3,9,15,9,50);
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DATE);  //也可以使用DAY_OF_MONTH;
		int weekday = calendar.get(Calendar.DAY_OF_WEEK); 
		System.out.println(year);
		System.out.println(month);      //0-11表示对应的月份。0是1月,1是2月。。。11是12月
		System.out.println(day);
		System.out.println(weekday);
	
	}
}

把时间换为2021年3月9日,DAY_OF_WEEK返回值变为6,实际值应为3

 

因为月份是从0开始的,,你传三月,,输出一下就可以看出来,,结果是

2021
3
9
6
2021-04-09 15:09:50

看到没,,到四月了,,你再去看看4月9号是周五,美国人周日是第一天,,所以周五就是第六天,,所以代码没有错,,你参数有问题

java.util.Calendar public static final int JANUARY = 0