java根据开始时间结束时间计算中间间隔日期的实例代码

 更新时间:2019年05月28日 16:53:15   作者:MiChen先生  
这篇文章主要介绍了java根据开始时间结束时间计算中间间隔日期的实例代码,需要的朋友可以参考下

具体代码如下所述:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class Test {
 public static List<String> findDates(String stime, String etime)
   throws ParseException {
  List<String> allDate = new ArrayList();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  Date dBegin = sdf.parse(stime);
  Date dEnd = sdf.parse(etime);
  allDate.add(sdf.format(dBegin));
  Calendar calBegin = Calendar.getInstance();
  // 使用给定的 Date 设置此 Calendar 的时间
  calBegin.setTime(dBegin);
  Calendar calEnd = Calendar.getInstance();
  // 使用给定的 Date 设置此 Calendar 的时间
  calEnd.setTime(dEnd);
  // 测试此日期是否在指定日期之后
  while (dEnd.after(calBegin.getTime())) {
   // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
   calBegin.add(Calendar.DAY_OF_MONTH, 1);
   allDate.add(sdf.format(calBegin.getTime()));
  }
  return allDate;
 }
 public static void main(String[] args) {
  //测试数据
  String stime = "2019-05-01";
  String etime = "2019-05-05";
  //集合中包含2019-05-01/2019-05-05,不需要可去除
  List<String> list = new ArrayList<>();
  try {
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   long s = Long.valueOf(sdf.parse(stime).getTime());
   long e = Long.valueOf(sdf.parse(etime).getTime());
   //只有结束时间大于开始时间时才进行查询
   if(s<e) {
    list = findDates(stime, etime);
   }
  } catch (ParseException e) {
   e.printStackTrace();
  }
  for(String time : list) {
   System.out.println(time);
  }
  System.out.println("间隔天数:" + list.size());
 }
}

ps:下面看下java根据开始时间和结束时间,计算中间天数,并打印

import java.text.SimpleDateFormat;
import java.util.Date;
public class Calcdate {
 static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 static SimpleDateFormat ymd = new SimpleDateFormat("yyyy-MM-dd");
 public static void main(String[] args)throws Exception{
  Date beginTime = sdf.parse("2015-04-23 12:32:44");
//  Date endTime = sdf.parse("2015-04-23 14:56:44");
  Date endTime = sdf.parse("2015-04-29 14:56:44");
  long diff = (endTime.getTime() - beginTime.getTime()) / (86400 * 1000);
  System.out.println("diff = " + diff);
  Date sb = null;
  Date se = null;
  if(diff == 0){
   sb = beginTime;
   se = endTime;
   String ss = String.format("%d> Sb=%s, Se=%s", 1, Coder.DateTimeToStr(sb), Coder.DateTimeToStr(se));
   System.out.println(ss);
  }else {
   int i = 0;
   while (i <= diff) {
    if (i == 0) {
     sb = beginTime;
     se = sdf.parse(ymd.format(sb) + " 23:59:59");
    } else if (i == diff) {
     sb = sdf.parse(ymd.format(endTime) + " 00:00:00");
     se = endTime;
    } else {
     se = new Date(beginTime.getTime() + i * 24 * 60 * 60 * 1000);
     sb = sdf.parse(ymd.format(se) + " 00:00:00");
     se = sdf.parse(ymd.format(se) + " 23:59:59");
    }
    String ss = String.format("%d> Sb=%s, Se=%s", i, Coder.DateTimeToStr(sb), Coder.DateTimeToStr(se));
    System.out.println(ss);
    i++;
   }
  }
 }
}
diff = 6
0> Sb=2015-04-23 12:32:44, Se=2015-04-23 23:59:59
1> Sb=2015-04-24 00:00:00, Se=2015-04-24 23:59:59
2> Sb=2015-04-25 00:00:00, Se=2015-04-25 23:59:59
3> Sb=2015-04-26 00:00:00, Se=2015-04-26 23:59:59
4> Sb=2015-04-27 00:00:00, Se=2015-04-27 23:59:59
5> Sb=2015-04-28 00:00:00, Se=2015-04-28 23:59:59
6> Sb=2015-04-29 00:00:00, Se=2015-04-29 14:56:44

总结

以上所述是小编给大家介绍的java根据开始时间结束时间计算中间间隔日期的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • JetBrains 发布下一代 IDE无比轻量几秒就能启动干活

    JetBrains 发布下一代 IDE无比轻量几秒就能启动干活

    虽然 JetBrains 公司说 Fleet 的定位和目标并不是代替其他 IDE,但个人觉得, 如果 Fleet 火起来了,其他 IDE 就会黯然失色,特别是多语言开发者,谁愿意装多个 IDE 呢?到时候,可能 JetBrains 以后的所有 IDE 要一统江湖了
    2021-12-12
  • 利用java和sqlserver建立简易图书管理系统的完整步骤

    利用java和sqlserver建立简易图书管理系统的完整步骤

    图书馆管理系统是图书馆管理工作中不可缺少的部分,它对于图书馆的管理者和使用者都非常重要,下面这篇文章主要给大家介绍了关于利用java和sqlserver建立简易图书管理系统的完整步骤,需要的朋友可以参考下
    2022-06-06
  • 浅析Bean Searcher 与 MyBatis Plus 区别介绍

    浅析Bean Searcher 与 MyBatis Plus 区别介绍

    Bean Searcher号称任何复杂的查询都可以一行代码搞定,但 Mybatis Plus 似乎也有类似的动态查询功能,最近火起的 Bean Searcher 与 MyBatis Plus 倒底有啥区别?带着这个问题一起通过本文学习下吧
    2022-05-05
  • java垃圾收集器与内存分配策略详解

    java垃圾收集器与内存分配策略详解

    本篇文章主要介绍了Java垃圾收集器与内存分配策略的方法和原理总结,Java垃圾回收器是Java虚拟机的重要模块,具有一定的参考价值,有兴趣的可以了解一下
    2021-08-08
  • Spring中的ApplicationContext与BeanFactory详解

    Spring中的ApplicationContext与BeanFactory详解

    这篇文章主要介绍了Spring中的ApplicationContext与BeanFactory详解,Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类,事实上, Spring提供了两种不同的容器,一种是最基本的BeanFactory,另一种是扩展的ApplicationContext,需要的朋友可以参考下
    2024-01-01
  • SpringBoot获取Request和Response方法代码解析

    SpringBoot获取Request和Response方法代码解析

    这篇文章主要介绍了SpringBoot获取Request和Response方法代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • java实现登录案例

    java实现登录案例

    这篇文章主要为大家详细介绍了java实现登录案例的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java线程之线程同步synchronized和volatile详解

    Java线程之线程同步synchronized和volatile详解

    这篇文章主要介绍了Java线程之线程同步synchronized和volatile详解,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用

    Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用

    这篇文章主要介绍了Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Struts2学习笔记(5)-参数传递方法

    Struts2学习笔记(5)-参数传递方法

    本文主要介绍Struts2中参数传递方法,希望能给大家做一个参考。
    2016-06-06

最新评论