首页 > 编程语言 >java date 时间最大连续天数

java date 时间最大连续天数

时间:2024-03-07 15:22:50浏览次数:38  
标签:dates java 天数 addDays dateList add date return

java localdate 时间最大连续天数

  public class DateUtils {

  public static Date addDays(Date time, Integer day) {
    try {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      Calendar cd = Calendar.getInstance();
      cd.setTime(time);
      cd.add(Calendar.DATE, day);
      return getDateByPattern(sdf.format(cd.getTime()), DAY_FORMAT);
    } catch (Exception ex) {
      log.error("日期增加自然天出错:{}", ex);
      return null;
    }
  }


 public static int continuousDayDate(List<Date> dateList) {
    if (CollectionUtils.isEmpty(dateList) ) {
      log.error("参数有误,连续天数为0  dayList{}" , dateList);
      return 0;
    }
    
    List<LocalDate> datetimeList = dateList.stream()
      .map(e-> LocalDateTime.ofInstant(e.toInstant(), ZoneId.systemDefault()))
      .sorted(LocalDateTime::compareTo)
      .map(LocalDateTime::toLocalDate)
      .collect(Collectors.toList());
    return continuousDayLocalDate(datetimeList);
  }
  
  public static int continuousDayLocalDate(List<LocalDate> dateList){
    if (dateList == null || dateList.size() ==0) {
      return 0;
    }
    dateList = dateList.stream().sorted(LocalDate::compareTo).collect(Collectors.toList());
    int maxContinuousDay = 1;
    int continuousDay = 1;
    for (int i = 0; i < dateList.size(); i++) {
      if (i == dateList.size() -1){
        break;
      }
      LocalDate date = dateList.get(i);
      LocalDate secondDate = dateList.get(i + 1);
      if (date.plusDays(1).equals(secondDate)){
        continuousDay ++;
        if (continuousDay > maxContinuousDay){
          maxContinuousDay = continuousDay;
        }
      }else {
        continuousDay = 1;
      }
    }
    return maxContinuousDay;
  }
  
  public static void main(String[] args) {
    List<Date> dates = new ArrayList<>();
    Date date = new Date();
    dates.add(addDays(date, 1));
    dates.add(addDays(date, 2));
    dates.add(addDays(date, 5));
    dates.add(addDays(date, 7));
    dates.add(addDays(date, 8));
    dates.add(addDays(date, 9));
    
    System.out.println(continuousDayDate(dates));
  
  
    List<LocalDate> list = new ArrayList<>();
  
    list.add(LocalDate.now());
    list.add(LocalDate.now().plusDays(1));
    list.add(LocalDate.now().plusDays(2));
  
    System.out.println(DateUtil.continuousDayLocalDate(list));
  }
  }
 }

标签:dates,java,天数,addDays,dateList,add,date,return
From: https://www.cnblogs.com/bigorang/p/18059010

相关文章

  • RxJava3 用法
    https://github.com/xxm-sz/blog/issues/14主要变化主要特点单一依赖:Reactive-Streams继续支持Java6+和Android2.3+修复了API错误和RxJava2的许多限制旨在替代RxJava2,具有相对较少的二进制不兼容更改提供Java8lambda友好的API关于并发源的不同意见异步或同步执行......
  • JavaSE的第十步 —— 方法
    一、方法方法(method):用来完成特定功能的代码片段,类似于其它语言的函数(function)。方法用于定义该类或该类的实例的行为特征和功能实现。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。通俗点说的话......
  • JavaSE的第九步 —— 循环中常用到的关键字break和continue
    一、break语句在嵌套for循环中用到break的时候代表着,跳出整个循环 例如:publicstaticvoidmain(String[]args){ inti=0; //这样看起来是判断条件一直为true,那么就会死循环下去 while(true){ System.out.println("i="+i); i++; //但是这里添加了break语句,......
  • Java学习笔记——第八天
    常用API(String、ArrayList部分)APIAPI是什么API(ApplicationProgrammingInterface,应用程序编程接口)就是别人写好的一些程序,给程序员直接拿去调用即可解决问题。API文档是什么Java提供的API使用说明书。包包是什么包是用来分门别类的管理各种不同程序的,类似于文件夹,建包......
  • Oracle数据库Date类型查询结果多出“.0“的解决方法
    ​ oracle设置数据库某张表的字段类型为date,数据库存值为 2019-11-2518:51:47格式,但是从数据库查询出来之后格式为  StringstopTime=map.get("stopTime").toString;2019-11-2518:51:47.0,多了个零,不知是毫秒还是纳秒,目前还不知为何,解决办法为转换时间类型或者前端分......
  • 为什么现在连Date类都不建议使用了?
    一、有什么问题吗java.util.Date?java.util.Date(Date从现在开始)是一个糟糕的类型,这解释了为什么它的大部分内容在Java1.1中被弃用(但不幸的是仍在使用)。设计缺陷包括:它的名称具有误导性:它并不代表一个日期,而是代表时间的一个瞬间。所以它应该被称为Instant——正如它的java.t......
  • Java自定义异常和全局异常处理
    1、自定义异常:自定义异常类 BusinessExceptionextendsRuntimeException:RuntimeException是Java提供的一个运行时异常类。publicclassBusinessExceptionextendsRuntimeException{privateintcode;//使用枚举构造publicBusinessException(HttpCodeEn......
  • JavaScript 最新动态:2024 年新功能
    前言随着Web技术的日新月异,JavaScript也在不断地吸收新的特性和技术,以满足日益复杂和多样化的开发需求。在2024年,JavaScript迎来了一系列令人瞩目的新功能,这些功能不仅提升了开发者的效率,也极大地丰富了Web应用的表现力和交互性。在接下来的内容中,我们将逐一介绍这些新......
  • java mysql事物特性记录,在同一事物中更新执行后,立即查询得到的是新数据还是旧数据?
    在Java中,如果你使用MySQL,并且你在一个事务方法中执行了更新操作,那么在这个事务结束并提交之前,其他事务或查询(非同一事务内的)是看不到你的更新结果的。这是数据库事务的隔离性所保证的。 但是,如果你在同一事务中立即执行查询,你将看到更新后的数据。因为查询和更新都在同一个事务......
  • javascript如何循环遍历对象
    在JavaScript中有多种循环遍历对象的方法,下面本篇文章就来给大家介绍一下使用JavaScript循环遍历对象的方法,希望对大家有所帮助。1、使用for循环for循环是js中最常用的一个循环工具,经常用于数组的循环遍历。letarr=[1,2,3];for(leti=0;i<arr.length;i++){co......