1. 使用Java中Calendar类获取月份,返回的月份会比当前月份小1。 这是因为月份是从0开始算的,最小月为0,最大月份为11 。
请看如下示例:
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
//输出当前日期
System.out.println("date = " + new Date());
//获取本月
int month = c.get(Calendar.MONTH);
System.out.println("month = " + month);
//获取实际的最小月份值
int minMonth = c.getActualMinimum(Calendar.MONTH);
//获取实际的最大月份值
int maxMonth = c.getActualMaximum(Calendar.MONTH);
System.out.println("minMonth = " + minMonth);
System.out.println("maxMonth = " + maxMonth);
}
}
运行结果为:
date = Wed Mar 28 15:12:42 CST 2018
month = 2
minMonth = 0
maxMonth = 11
Process finished with exit code 0
本月为3月(Mar),返回月份却为2。 所以今后使用Calendar类获取月份时,记得+1,返回的才是当前月份。
2. Calendar类中,每月的天和每周的天都是从1开始的。
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
//输出当前日期
System.out.println("date = " + new Date());
int minDayOfMonth = c.getActualMinimum(Calendar.DAY_OF_MONTH);
int maxDayOfMonth = c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("minDayOfMonth = " + minDayOfMonth);
System.out.println("maxDayOfMonth = " + maxDayOfMonth);
int minDayOfWeek = c.getActualMinimum(Calendar.DAY_OF_WEEK);
int maxDayOfWeek = c.getActualMaximum(Calendar.DAY_OF_WEEK);
System.out.println("minDayOfWeek = " + minDayOfWeek);
System.out.println("maxDayOfWeek = " + maxDayOfWeek);
}
}
输出结果:
date = Wed Mar 28 15:19:56 CST 2018
minDayOfMonth = 1
maxDayOfMonth = 31
minDayOfWeek = 1
maxDayOfWeek = 7
Process finished with exit code 0
3. 获取Calendar.DAY_OF_WEEK的值时,周日为1,周一为2,周二为3,周三为4,... ,周六为7 。
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
//输出当前日期
System.out.println("date = " + new Date());
//获取当前日是本周的星期几
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
System.out.println("dayOfWeek = " + dayOfWeek);
//获取当前日是本月几号
int dayOfMonth = c.get(Calendar.DAY_OF_MONTH);
System.out.println("dayOfMonth = " + dayOfMonth);
//获取当前日是本月几号
int date = c.get(Calendar.DATE);
System.out.println("date = " + date);
}
}
输出结果为:
date = Wed Mar 28 15:27:34 CST 2018
dayOfWeek = 4
dayOfMonth = 28
date = 28
Process finished with exit code 0
当前时间为周三(Wed),dayOfWeek却是4。 想要获取正确值,应该相应 -1。