Java-比对两个Date时间的间隔

简介: Java-比对两个Date时间的间隔
需求:获取两个Date时间间隔的天数,并依次输出每一天.


示例:

两个时间: [2018-10-01,2018-10-05)
时间间隔: 4
输出时间:
  Mon Oct 01 00:00:00 CST 2018
  Tue Oct 02 00:00:00 CST 2018
  Wed Oct 03 00:00:00 CST 2018
  Thu Oct 04 00:00:00 CST 2018


代码实现具体如下:

package hrt.executor.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateBetweenTest {
    public static void main(String[] args) throws ParseException {
        Calendar compareDay = new GregorianCalendar();
        //Calendar compareDay = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String startStr = "2018-10-01";
        String endStr = "2018-10-05";
        Date startDate = sdf.parse(startStr);
        Date endDate = sdf.parse(endStr);
        int differentDays = differentDays(startDate, endDate);
        System.out.println(startStr + " ~ " + endStr + " ,间隔天数为" + differentDays);
        for (int i = 0; i < differentDays; i++) {
            compareDay.setTime(startDate);
            compareDay.add(compareDay.DATE, i);
            System.out.println(compareDay.getTime());
        }
    }
    /**
     * date2比date1多的天数:比较是基于年月日做的比较,不计算时分秒
     * 
     * @param date1
     * @param date2
     * @return
     */
    public static int differentDays(Date date1, Date date2) {
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);
        int day1 = cal1.get(Calendar.DAY_OF_YEAR);
        int day2 = cal2.get(Calendar.DAY_OF_YEAR);
        int year1 = cal1.get(Calendar.YEAR);
        int year2 = cal2.get(Calendar.YEAR);
        if (year1 != year2) // 不同年
        {
            int timeDistance = 0;
            for (int i = year1; i < year2; i++) {
                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) // 闰年
                {
                    timeDistance += 366;
                } else // 不是闰年
                {
                    timeDistance += 365;
                }
            }
            return timeDistance + (day2 - day1);
        } else // 同一年
        {
            // System.out.println("判断day2 - day1 : " + (day2-day1));
            return day2 - day1;
        }
    }
}


执行结果如下:


网络异常,图片无法展示
|


代码运行结果截图


参考文章:

https://www.cnblogs.com/0201zcr/p/5000977.html

相关文章
|
2月前
|
Java 关系型数据库 MySQL
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
38 0
|
2月前
|
Java
关于java获取时间 new Date(),显示“上午、下午”
关于java获取时间 new Date(),显示“上午、下午”
55 0
|
9月前
|
Java p3c
【Java用法】请使用System.currentTimeMillis()代替new Date().getTime()
【Java用法】请使用System.currentTimeMillis()代替new Date().getTime()
68 0
|
10月前
|
Java API
Java之Date类以及SimpleDateFormal类的概述
Java之Date类以及SimpleDateFormal类的概述
59 0
|
1月前
|
安全 Java 测试技术
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
【6月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
30 0
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
|
2月前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型
|
11月前
|
Java
Java String、Date、Calendar、LocalDate和LocalDateTime互转
Java String、Date、Calendar、LocalDate和LocalDateTime互转
|
2月前
|
Java
java将Date类型转化为固定格式yyyyMMdd字符串
java将Date类型转化为固定格式yyyyMMdd字符串
91 0
|
2月前
解决 java.text.ParseException: Unparseable date
解决 java.text.ParseException: Unparseable date
203 0
|
8月前
|
Java
java实体类接收Date时间
java实体类接收Date时间