1. 在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因
Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。
有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。
看下表的返回值
星期日为一周的第一天 | SUN(天) | MON(一) | TUE(二) | WED(三) | THU(四) | FR(五)I | SAT(六) |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
星期一为一周的第一天 | MON | TUE | WED | THU | FRI | SAT | SUN |
DAY_OF_WEEK返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
//获取当前日期为周几
@Test
public int fun() {
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int weekNum = 0;
// 一周的第一天是否是星期天
boolean weekDay = calendar.getFirstDayOfWeek() == Calendar.SUNDAY;
if (weekDay) {
weekNum = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (weekNum == 0) {
weekNum = 7;
}
}
return weekNum;
}
2. 在获取月份时,Calendar.MONTH + 1 的原因
Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。
@Test
public void fun2(){
Date date = new Date();
Calendar instance = Calendar.getInstance();
instance.setTime(date);
int i = instance.get(Calendar.MONTH)+1;
System.out.println(i);
}