注意
日 一 二 三 四 五 六
当前日期在周里面处于第几天,星期日是第一天,星期一是所在周的第二天
所以可能导致我们求某一天所在周的周日时,可能得到的实际日期是我们所理解的上周的周日
calendar的时间参数
以下参数下面方法使用介绍
public final static int YEAR = 1;
public final static int MONTH = 2;
public final static int WEEK_OF_YEAR = 3;
public final static int WEEK_OF_MONTH = 4;
public final static int DATE = 5;
public final static int DAY_OF_MONTH = 5;
public final static int DAY_OF_YEAR = 6;
public final static int DAY_OF_WEEK = 7;
public final static int DAY_OF_WEEK_IN_MONTH = 8;
public final static int AM_PM = 9;
public final static int HOUR = 10;
public final static int HOUR_OF_DAY = 11;
public final static int MINUTE = 12;
public final static int SECOND = 13;
public final static int MILLISECOND = 14;
一、获取一天最开始时间
public static Date getStartOfDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//把小时、分、秒、毫秒至为0
calendar.set(HOUR_OF_DAY , 0);
calendar.set(MINUTE , 0);
calendar.set(SECOND , 0);
calendar.set(MILLISECOND , 0);
return calendar.getTime();
}
二、获取一天最晚时间
public static Date getEndOfDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//把时、分、秒、毫秒至为当天最大值
calendar.set(HOUR_OF_DAY , 23);
calendar.set(MINUTE , 59);
calendar.set(SECOND , 59);
calendar.set(MILLISECOND , 999);
return calendar.getTime();
}
三、获取昨天
public static Date getYesterday(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//DATE表示天,加上负1天,表示昨天
calendar.add(DATE, -1);
calendar.set(HOUR_OF_DAY , 0);
calendar.set(MINUTE , 0);
calendar.set(SECOND , 0);
calendar.set(MILLISECOND , 0);
return calendar.getTime();
}
四、获取明天
public static Date getTommorrow(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//DATE表示天,加上1天,表示明天
calendar.add(DATE, 1);
calendar.set(HOUR_OF_DAY , 0);
calendar.set(MINUTE , 0);
calendar.set(SECOND , 0);
calendar.set(MILLISECOND , 0);
return calendar.getTime();
}
五、获取一个月的第一天
public static Date getFirsDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(DAY_OF_MONTH , 1);
calendar.set(HOUR_OF_DAY , 0);
calendar.set(MINUTE , 0);
calendar.set(SECOND , 0);
calendar.set(MILLISECOND , 0);
return calendar.getTime();
}
六、获取一个月的最后一天
public static Date getLastDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//由于我们不知道一个月是30天还是31天,所以我们可以获得下个月的第一天,
//然后再减1天,就得到这个月的最后一天。
//比如:获取2月的最后一天,我们可以获取3月1号,减一天得到2月最后一天。
//month+1,获取下月
calendar.add(MONTH , 1);
//获取下月的第一天
calendar.set(DAY_OF_MONTH , 1);
//减一天,获取上月的最后一天
calendar.add(DATE, -1);
calendar.set(HOUR_OF_DAY , 0);
calendar.set(MINUTE , 0);
calendar.set(SECOND , 0);
calendar.set(MILLISECOND , 0);
return calendar.getTime();
}
七、获取周一
public static Date getMonday(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//这里为什么要减1呢?因为一周的第一天是周日,第二天是周一。
//如果我们date传的刚好是周日,比如2020-12-06,那么获取12月6号所在的周的周一就是12月7号
//所以我们减1,取周六12-05,再取周一,就是我们所认识的所在周的周一就是12-01号了
calendar.add(DATE, -1);
//day of week 获取周中第几天,周一是第二天
calendar.set(DAY_OF_WEEK , 2);
calendar.set(HOUR_OF_DAY , 0);
calendar.set(MINUTE , 0);
calendar.set(SECOND , 0);
calendar.set(MILLISECOND , 0);
return calendar.getTime();
}
八、获取周日
//如果所传日期是周日的话,调用这个方法有问题,当前方法只支持周一到周六
public static Date getSunday(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//这里为什么要加7呢?同理,因为一周的第一天是周日,第二天是周一。我们取date所在周的周日,其实是取下周的第一天周日,举个例子:获取2020-12-07号所在周的周日,calendar返回的是2020-12-06号。我们在日期加7天为12月14日,获取calendar返回的周日为12月13日。12月13日就是我们认识的12月7号所在周对应的周日的日期
calendar.add(DATE, 7);
//day of week 获取周中第几天,周日是第一天
calendar.set(DAY_OF_WEEK , 1);
calendar.set(HOUR_OF_DAY , 0);
calendar.set(MINUTE , 0);
calendar.set(SECOND , 0);
calendar.set(MILLISECOND , 0);
return calendar.getTime();
}