当前位置: 首页 > 知识库问答 >
问题:

使用循环Java查找多个日期中的最大差异

施刚毅
2023-03-14

我试图找出几个日期之间的最大差异,这怎么可能?答案应该是01012001-01012011。我想找出两个列表之间最大的日期间隔,这怎么可能?

public void Date (){
    SimpleDateFormat myFormat = new SimpleDateFormat("ddMMyyyy");
    List<String> start = Arrays.asList("01011992","01012001","01012001");
    String dateBeforeString = start.get(2);  
    List<String> end = Arrays.asList("02012001","02012001","01012011");
    String dateAfterString = end.get(2);

    try {        
        Date dateBefore = myFormat.parse(dateBeforeString);
        Date dateAfter = myFormat.parse(dateAfterString);
        long difference = dateAfter.getTime() - dateBefore.getTime();
        daysBetween = (difference / (1000*60*60*24));

        System.out.println("Days: "+daysBetween);
    } catch (Exception e) {
        e.printStackTrace();
    }
}   

共有1个答案

狄易安
2023-03-14

试着这样做:

 SimpleDateFormat myFormat = new SimpleDateFormat("ddMMyyyy");
        List<String> start = Arrays.asList("01011992", "01012001", "01012001");
        List<String> end = Arrays.asList("02012001", "02012001", "01012011");



        int lastIndex =0;
        long lastValue =0;
        for (int i = 0; i < start.size(); i++) {
            String dateBeforeString = start.get(i);
            String dateAfterString = end.get(i);
            try {
                Date dateBefore = myFormat.parse(dateBeforeString);
                Date dateAfter = myFormat.parse(dateAfterString);
                long difference = dateAfter.getTime() - dateBefore.getTime();
                long daysBetween = (difference / (1000 * 60 * 60 * 24));


                if(lastValue<daysBetween){
                    lastValue=daysBetween;
                    lastIndex = i;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println("result: " +  start.get(lastIndex)+"-"+end.get(lastIndex)+" maxDiff "+lastValue);
 类似资料:
  • 问题内容: 我在Java中有三个约会:a,b,c。这些日期中的任何一个或所有日期都可以为空。在没有大量if- else块的情况下确定a,b,c中最早日期的最有效方法是什么? 问题答案: 无法避免空值检查,但是通过一些重构,您可以使其变得更轻松。 创建一个安全地比较两个日期的方法: 然后结合调用: 实际上,您可以将此方法用作任何通用方法:

  • 我想在hibernate中选择最大日期,但出现以下错误: Java语言sql。SqlSyntaxerRorexException:ORA-00932:不一致的数据类型:预期的时间戳得到的数字 查询是: 数据库是oracle。数据库中该字段的类型为时间戳(6)

  • 我不知道如何搜索这个,所以真的没有成功。我将从我拥有的数据类开始, 以下是培训计划实体(示例) 以下是培训实体(示例) 我希望我能够清楚地解释这一点,所以我在这里试图实现的是从所有以前的(培训计划)阶段获得培训。 工作原理——当创建下一个(新培训计划)计划阶段时,它会使用之前的PlanID引用旧计划,以便识别其父计划(类似的层)。 例如,如果TrainingPlan有第2阶段,我可以很容易地从第1

  • 我被困在java之间。时间世俗的ChronoUnit和java。时间世俗的暂时的直到。它们是如何工作的??

  • 问题内容: 我创建的代码为我寻找回文数时提供了数千种解决方案。任务是找到可能的最高编号: 如何使代码仅显示for循环创建的最大值? 问题答案: 该答案在代码中描述为解决方案:

  • 我的发票上有两个日期, 什么是得到这些日期之间的区别的最佳方法? 提前道谢!