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);
        }
    
    }
  • 相关阅读:
    用Sqoop进行Hive和MySQL之间的数据互导
    Spark读HBase写MySQL
    Kafka如何彻底删除topic及数据
    LDAP-HA安装与配置(Keepalived方式实现)
    配置两个Hadoop集群Kerberos认证跨域互信
    MYSQL HA 部署手册
    ELK简单安装测试
    Elasticsearch CURL命令
    大数据常见错误解决方案(转载)
    生成 RSA 公钥和私钥的方法
  • 原文地址:https://www.cnblogs.com/jason2018524/p/10186180.html
Copyright © 2011-2022 走看看