Calendar的用法大全(求日、周、月等)

注意

日 一 二 三 四 五 六

当前日期在周里面处于第几天,星期日是第一天,星期一是所在周的第二天
所以可能导致我们求某一天所在周的周日时,可能得到的实际日期是我们所理解的上周的周日

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();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值