代码之家  ›  专栏  ›  技术社区  ›  SassyRegards201

如何在不使用对象的情况下比较两个日期?

  •  -3
  • SassyRegards201  · 技术社区  · 7 年前

    /**报告date1在时间上是否早于date2。例如,isEarlierThan(“12-01-2015”, “02-15-2017”)为真,但isEarlierThan(“10-11-2016”,“10-11-2016”)和isEarlierThan(“09-09-1967”,“02-15-1933”)为假。 * /

    public static boolean isEarlierThan (String date1, String date2) 
    
    {
        if(date1.compareTo(date2) > 0) {
            return true;
        }
        else if (date1.compareTo(date2) <= 0) {
            return false;
        }
        else {
            return true;
        }
    }
    

    public void testIsEarlierThan () 
    {
        assertTrue(isEarlierThan("12-01-2015", "02-15-2017"));
        assertFalse(isEarlierThan("10-11-2016", "10-11-2016"));
        assertFalse(isEarlierThan("09-09-1967", "02-15-1933"));
        assertTrue(isEarlierThan("02-14-2017", "02-15-2017"));
    }
    

    当我运行测试用例时,只有前两个工作,然后它在第三个停止。但我不明白怎么了?如果第一个可行,那么第三个就行了吗?提前感谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   SassyRegards201    7 年前

    public static boolean isEarlierThan (String date1, String date2)
    {
    
        String month1 = date1.substring(0, 2);
        String month2 = date2.substring(0, 2);
    
        String day1 = date1.substring(3, 5);
        String day2 = date2.substring(3, 5);
    
        String year1 = date1.substring(6, 10);
        String year2 = date2.substring(6, 10);
    
        date1 = year1 + month1 + day1; // + month1 + day1
        date2 = year2 + month2 + day2; // + month2 + day2
    
        if (date1.compareTo(date2) < 0)
        {
            return true;
        }
        else if (date1.compareTo(date2) > 0)
        {
            return false;
        }
        else
        {
            return false;
        }
    }
    

    基本上,我有一种方法,把这两个日期分为一年、一个月和一天。然后以不同的顺序将它们放在一起,这样当我比较它们时,它将打印出,如果date1在date2之前,则为true,如果date1在date2之后或等于date2,则为false。