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

相关文章

  • 浅谈Java 将图片打包到jar中的路径问题

    浅谈Java 将图片打包到jar中的路径问题

    下面小编就为大家分享一篇浅谈Java 将图片打包到jar中的路径问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • java  中Excel转shape file的实例详解

    java 中Excel转shape file的实例详解

    这篇文章主要介绍了java 中Excel转shape file的实例详解的相关资料,希望通过本文大家能实现这样的功能,需要的朋友可以参考下
    2017-09-09
  • java实现哈夫曼压缩与解压缩的方法

    java实现哈夫曼压缩与解压缩的方法

    这篇文章主要介绍了java实现哈夫曼压缩与解压缩的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 使用IDEA启动项目遇见ClassNotFoundException的解决方案

    使用IDEA启动项目遇见ClassNotFoundException的解决方案

    这篇文章主要介绍了使用IDEA启动项目遇见ClassNotFoundException的正确解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot 接口开发教程(httpclient客户端)

    SpringBoot 接口开发教程(httpclient客户端)

    这篇文章主要介绍了SpringBoot 接口开发教程(httpclient客户端),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java函数式编程(八):字符串及方法引用

    Java函数式编程(八):字符串及方法引用

    这篇文章主要介绍了Java函数式编程(八):字符串及方法引用,本文是系列文章的第8篇,其它文章请参阅本文底部的相关文章,需要的朋友可以参考下
    2014-09-09
  • Java多线程的具体介绍与使用笔记小结

    Java多线程的具体介绍与使用笔记小结

    Java多线程详细介绍线程是程序执行的最小单元,多线程是指程序同一时间可以有多个执行单元运行(这个与你的CPU核心有关)。 接下来通过本文给大家介绍Java多线程的具体介绍与使用笔记小结,感兴趣的朋友一起看看吧
    2021-05-05
  • Java开发人员最常犯的10个错误

    Java开发人员最常犯的10个错误

    这篇文章主要介绍了Java开发人员最常犯的10个错误,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • springboot配置请求超时时间(Http会话和接口访问)

    springboot配置请求超时时间(Http会话和接口访问)

    本文主要介绍了springboot配置请求超时时间,包含Http会话和接口访问两种,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • 有关tomcat内存溢出的完美解决方法

    有关tomcat内存溢出的完美解决方法

    下面小编就为大家带来一篇有关tomcat内存溢出的完美解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05

最新评论