java基础操作5——java自定义获取任意年、月、日的起始和结束时间

在实际项目开发过程中,获取任意时间的起始和结束时间是常用操作,尤其对于统计业务来说,更是必要操作,理解了时间自定义的规律,对于开发人员的效率提升是大有裨益的。

一.获取任意年的起始和结束时间

1.获取任意年的起始时间
public static Date getDateByBeforeYear(Date today, int number) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.YEAR, todayEnd.get(Calendar.YEAR) - number);
        todayEnd.set(Calendar.MONTH, 0);
        todayEnd.set(Calendar.DAY_OF_MONTH, 1);
        todayEnd.set(Calendar.HOUR_OF_DAY, 0);
        todayEnd.set(Calendar.MINUTE, 0);
        todayEnd.set(Calendar.SECOND, 0);
        todayEnd.set(Calendar.MILLISECOND, 0);
        return todayEnd.getTime();
}
2.获取任意年的结束时间
public static Date getDateByAfterYearNew(Date today, int number) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.YEAR, todayEnd.get(Calendar.YEAR) - number);
        todayEnd.set(Calendar.MONTH, 11);
        todayEnd.set(Calendar.DAY_OF_MONTH, 31);
        todayEnd.set(Calendar.HOUR_OF_DAY, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
}

 二.获取任意月的起始和结束时间

1.获取任意月的起始时间
public static Date getDateByBeforeMonth(Date today, int number) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.MONTH, todayEnd.get(Calendar.MONTH) - number);
        todayEnd.set(Calendar.DAY_OF_MONTH, 1);
        todayEnd.set(Calendar.HOUR_OF_DAY, 0);
        todayEnd.set(Calendar.MINUTE, 0);
        todayEnd.set(Calendar.SECOND, 0);
        todayEnd.set(Calendar.MILLISECOND, 0);
        return todayEnd.getTime();
}
2.获取任意月的结束时间
public static Date getDateByAfterMonthNew(Date today, int number) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.MONTH, todayEnd.get(Calendar.MONTH)-number);
        todayEnd.set(Calendar.DAY_OF_MONTH, 0);
        todayEnd.set(Calendar.HOUR_OF_DAY, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
}

三.获取任意日的起始和结束时间

1.获取任意日的起始时间
public static Date getDateByBeforeDay(Date today, int day) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.DAY_OF_MONTH, todayEnd.get(Calendar.DAY_OF_MONTH) - day);
        todayEnd.set(Calendar.HOUR_OF_DAY, 0);
        todayEnd.set(Calendar.MINUTE, 0);
        todayEnd.set(Calendar.SECOND, 0);
        todayEnd.set(Calendar.MILLISECOND, 0);
        return todayEnd.getTime();
}
2.获取任意日的结束时间
public static Date getDateByAfterDayNew(Date today, int day) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.DAY_OF_MONTH, todayEnd.get(Calendar.DAY_OF_MONTH) - day);
        todayEnd.set(Calendar.HOUR_OF_DAY, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
}

四.获取任意时的起始和结束时间

1.获取任意时的起始时间
public static Date getDateByBeforeHour(Date today, int number) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.HOUR_OF_DAY, todayEnd.get(Calendar.HOUR_OF_DAY) - number);
        todayEnd.set(Calendar.MINUTE, 0);
        todayEnd.set(Calendar.SECOND, 0);
        todayEnd.set(Calendar.MILLISECOND, 0);
        return todayEnd.getTime();
}
 2.获取任意时的结束时间
public static Date getDateByAfterHourNew(Date today, int number) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(today);
        todayEnd.set(Calendar.HOUR_OF_DAY, todayEnd.get(Calendar.HOUR_OF_DAY) - number);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
}

五.获取任意时间的周信息

public static Integer getWeekOfDate(Date date) {
        Integer[] weekDays = {7, 1, 2, 3, 4, 5, 6};
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0) {
            w = 0;
        }
        return weekDays[w];
}

 六.获取任意时间是否在时间区间内

public static boolean belongCalendar(Date queryTime, Date from, Date to) {
        Calendar queryInfo = Calendar.getInstance();
        queryInfo .setTime(queryTime);
        Calendar after = Calendar.getInstance();
        after.setTime(from);
        Calendar before = Calendar.getInstance();
        before.setTime(to);
        if (queryInfo.after(after) && queryInfo.before(before)) {
            return true;
        } else {
            return false;
        }
}

 七.其他相关方法持续更新中

。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值