温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java如何根据开始时间结束时间计算中间间隔日期

发布时间:2021-07-22 11:18:10 来源:亿速云 阅读:858 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关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如何根据开始时间结束时间计算中间间隔日期”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI