DateUtil工具类记录

为支持日常工作需要,记录所用到的一些关于时间的工具类方法。随时进行补充。

java 复制代码
/**
    * Description:获取两个日期之间的天数差
    * @Author:hanyq
    * @Date:2023/9/19 11:23
    */
    public static int getDateDifference(Date startDate,Date endDate){
        int days = 0;
        try {
            Calendar startCalendar = Calendar.getInstance();
            startCalendar.setTime(startDate);
            Calendar endCalendar = Calendar.getInstance();
            endCalendar.setTime(endDate);
            //计算两个日期相差的天数
            //startCalendar.getTime().getTime()返回long毫秒数形式,毫秒转为秒所以除以1000
            //1天=24小时,1小时=60分,1分=60秒,所以两个时间的差再除以60 * 60 * 24换算成天的形式
            days = ((int) (startCalendar.getTime().getTime() / 1000) - (int) (endCalendar.getTime().getTime() / 1000)) / (60 * 60 * 24);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return days;
    }

    /**
     * 比较两个时间大小(当时间A大于等于时间B时会返回false;反之时间A小于时间B时会返回true)
     * @param startDate 时间A
     * @param endDate   时间B
     * @return
     */
    public static Boolean compareDate(Date startDate,Date endDate){
        Boolean result = false;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        try {
            result = startDate.after(endDate);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 获取当前日期对应的一周的开始日期
     * @param date
     * @return
     */
    public static Calendar getFirstDayOfWeek(Date date){
        Calendar result = null;
        try{
            Calendar calendarIndex = Calendar.getInstance();
            calendarIndex.setTime(date);
            //先判断该日期是否是周日,如果是的话将其减一(西方周六为一周结束,而我们以周日为一周结束)
            LocalDate weekHandle = LocalDate.of(calendarIndex.get(Calendar.YEAR), calendarIndex.get(Calendar.MONTH) + 1, calendarIndex.get(Calendar.DATE));
            int week = weekHandle.getDayOfWeek().getValue();

            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            if (week == 7){
                calendar.add(Calendar.DAY_OF_MONTH, -1);
            }
            calendar.set(Calendar.DAY_OF_WEEK, calendar.getActualMinimum(Calendar.DAY_OF_WEEK));
            calendar.add(Calendar.DAY_OF_MONTH, 1);

            result = calendar;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            return result;
        }
    }

    /**
     * 获取当前日期对应的一周的结束日期
     * @param date
     * @return
     */
    public static Calendar getLastDayOfWeek(Date date){
        Calendar result = null;
        try{
            Calendar calendarIndex = Calendar.getInstance();
            calendarIndex.setTime(date);
            //先判断该日期是否是周日,如果是的话将其减一(西方周六为一周结束,而我们以周日为一周结束)
            LocalDate weekHandle = LocalDate.of(calendarIndex.get(Calendar.YEAR), calendarIndex.get(Calendar.MONTH) + 1, calendarIndex.get(Calendar.DATE));
            int week = weekHandle.getDayOfWeek().getValue();

            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            if (week == 7){
                calendar.add(Calendar.DAY_OF_MONTH, -1);
            }
            calendar.set(Calendar.DAY_OF_WEEK, calendar.getActualMaximum(Calendar.DAY_OF_WEEK));
            calendar.add(Calendar.DAY_OF_MONTH, 1);

            result = calendar;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            return result;
        }
    }

    /**
    * Description:获取当时间所属月份开始时间
    * @Author:hanyq
    * @Date:2023/10/17 17:39
    */
    public static Calendar getFirstDayOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return calendar;
    }

    /**
     * Description:获取当时间所属月份结束时间
     * @Author:hanyq
     * @Date:2023/10/17 17:39
     */
    public static Calendar getLastDayOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        return calendar;
    }

    /**
     * Description:获取当时间所属年份开始时间
     * @Author:hanyq
     * @Date:2023/10/17 17:50
     */
    public static Calendar getFirstDayOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_YEAR, 1);
        return calendar;
    }

    /**
     * Description:获取当时间所属年份结束时间
     * @Author:hanyq
     * @Date:2023/10/17 17:50
     */
    public static Calendar getLastDayOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
        return calendar;
    }
相关推荐
Wang's Blog4 分钟前
Java 项目部署之 Docker工具快速入门: Docker 是什么以及它如何解决部署环境问题
java·开发语言·docker
老木避暑研究所9 分钟前
从原始数据到洞察:一次完整的避暑房环境数据采集、清洗与可视化分析
java·开发语言
前端 贾公子34 分钟前
LangGraph == 图的状态(State)管理 (上)
java·开发语言·数据库
huaweichenai40 分钟前
spring boot 实现file文件上传
java·spring boot·后端
VX_bysjlw9851 小时前
数码设备销售网站设计与实现39138-计算机毕设原创(免费领源码+带部署教程)
java·vue.js·spring boot·mysql·tomcat·mybatis·idea
荣码1 小时前
从0到1搭一个生产级RAG系统:串联前面21篇所有知识
java·python
xuxigifxfh1 小时前
牛客:HJ170 01序列
java·开发语言·算法·华为机考
野生技术架构师2 小时前
牛客网互联网大厂 Java 高频面试题整理(持续更新)
java·开发语言
小师兄吃牛肉2 小时前
Java语法 | 多重循环
java·开发语言·python
Han.miracle2 小时前
MySQL InnoDB:MVCC、记录锁、间隙锁、二级索引MVCC底层原理
java·开发语言