zoukankan      html  css  js  c++  java
  • Java计算两个日期相差的天数

    Java计算两个日期相差的天数

    1.日期转换工具类示例代码

    /**
     * Description: 日期工具类
     */
    public class MyDateUtil {
    
        /**
         * 将指定的日期字符串转换成日期
         * @param dateStr 日期字符串
         * @param pattern 格式
         * @return 日期对象
         */
        public static Date parseDate(String dateStr, String pattern)
        {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            Date date;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                throw  new RuntimeException("日期转化错误");
            }
    
            return date;
        }
    
        /**
         * 将指定的日期格式化成指定的日期字符串
         * @param date 日期对象
         * @param pattern 格式
         * @return 格式化后的日期字符串
         */
        public static String dateFormate(Date date, String pattern)
        {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            String dateStr;
            if(date == null)
            {
                return "";
            }
            dateStr = sdf.format(date);
            return dateStr;
        }
    
        /**
         * 查询指定日期前后指定的天数
         * @param date 日期对象
         * @param days 天数
         * @return 日期对象
         */
        public static Date incr(Date date, int days)
        {
            if (date == null){
                return null;
            }
    
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.DAY_OF_MONTH, days);
            return calendar.getTime();
        }
    
        /**
         * 将LocalDate日期转化成Date
         * @param localDate LocalDate对象
         * @return Date对象
         */
        public static Date localDateToDate(LocalDate localDate)
        {
            if (localDate == null)
            {
                return null;
            }
            ZoneId zoneId = ZoneId.systemDefault();
            ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId);
            Date date = Date.from(zonedDateTime.toInstant());
    
            return date;
        }
    
        /**
         * 将Date转成LocalDate对象
         * @param date Date对象
         * @return LocalDate对象
         */
        public static LocalDate dateToLocalDate(Date date)
        {
            if (date == null)
            {
                return null;
            }
            ZoneId zoneId = ZoneId.systemDefault();
            Instant instant = date.toInstant();
            LocalDate localDate = instant.atZone(zoneId).toLocalDate();
    
            return localDate;
        }
    }

    2.日期计算示例代码

    /**
     * Description: 日期测试类
     */
    public class DateTest {
    
        /**
         * 计算连个日期之间相差的天数
         */
        @Test
        public void testBetweenDays(){
            // 日期字符串
            String dateStr1 = "2018-12-27 17:07:07";
            String dateStr2 = "2018-12-31 00:00:00";
    
            // 获取日期
            Date date1 = MyDateUtil.parseDate(dateStr1, "yyyy-MM-dd HH:mm:ss");
            Date date2 = MyDateUtil.parseDate(dateStr2, "yyyy-MM-dd HH:mm:ss");
    
            // 获取相差的天数
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date1);
            long timeInMillis1 = calendar.getTimeInMillis();
            calendar.setTime(date2);
            long timeInMillis2 = calendar.getTimeInMillis();
    
            long betweenDays =  (timeInMillis2 - timeInMillis1) / (1000L*3600L*24L);
            System.out.println(betweenDays);
        }
    
        /**
         * 计算连个日期之间相差的天数
         */
        @Test
        public void testBetweenDays2(){
            // 日期字符串
            String dateStr1 = "2018-12-27 17:07:07";
            String dateStr2 = "2018-12-31 00:00:00";
    
            // 获取日期
            Date date1 = MyDateUtil.parseDate(dateStr1, "yyyy-MM-dd HH:mm:ss");
            Date date2 = MyDateUtil.parseDate(dateStr2, "yyyy-MM-dd HH:mm:ss");
    
            long betweenDays = (date2.getTime() - date1.getTime()) / (1000L*3600L*24L);
            System.out.println(betweenDays);
        }
    
    }
  • 相关阅读:
    OpenCv 学习安装(一)
    mysql 5.7.22安装
    sql游标
    (转)C# 获取当前路径的7中方法
    IIS 配置好了,为什么网站打开一片空白?
    (转)C#文件操作
    关于电脑开机不出现桌面即不启动explorer.exe桌面程序--------正解
    C#中 非静态字段、方法或属性“XXXX”要求对象引用-----解决方案
    关于svn获取获取文件时 Unable to connect to a repository at URL"https://..."执行上下文错误:参数错误
    获取汉字全拼、首字母缩写
  • 原文地址:https://www.cnblogs.com/jason2018524/p/10186180.html
Copyright © 2011-2022 走看看