比较2个包含日期的字符串类型列表,但需要忽略格式

时间:2016-08-26 13:54:05

标签: java list arraylist

我有2个列表,其中包含完全相似的日期,但格式不同。如何比较这两个列表是否相等而忽略了日期的格式?

例如:

列表1:

[2016-07-22, 2016-07-20, 2016-07-18, 2016-07-18, 2016-07-18, 2016-07-20, 2016-07-18]

列表2:

[22.07.2016, 20.07.2016, 18.07.2016, 18.07.2016, 18.07.2016, 20.07.2016, 18.07.2016]

让我知道无论如何我都可以这样做。

2 个答案:

答案 0 :(得分:1)

解析日期:

List<String> list1 = // ...
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<LocalDate> dates1 = list1.stream()
                              .map(s -> LocalDate.parse(s, formatter1))
                              .collect(Collectors.toList());

// same with list2 and an adapted formatter
List<String> list2 = // ...
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("dd.MM.yyyy");
List<LocalDate> dates2 = list2.stream()
                              .map(s -> LocalDate.parse(s, formatter2))
                              .collect(Collectors.toList());

boolean equal = dates1.equals(dates2);

答案 1 :(得分:1)

<强>更新

您可以使用此逻辑比较两个日期。

    SimpleDateFormat sf1= new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat sf2= new SimpleDateFormat("dd.MM.yyyy");
    Date date1=sf1.parse("2016-07-18");
    Date date2=sf2.parse("18.07.2016");
    boolean bol=date1.compareTo(date2)==0;
    System.out.println(bol);//true if two dates are equal, false if two date are not equal

示例

    Date[] dl1={sf1.parse("2016-07-22"), sf1.parse("2016-07-20"), sf1.parse("2016-07-18"), sf1.parse("2016-07-18"), sf1.parse("2016-07-18"), sf1.parse("2016-07-20"), sf1.parse("2016-07-18")};
    Date[] dl2={sf2.parse("22.07.2016"), sf2.parse("20.07.2016"), sf2.parse("18.07.2016"), sf2.parse("18.07.2016"), sf2.parse("18.07.2016"), sf2.parse("20.07.2016"), sf2.parse("18.07.2016")};

    List<Date> l1= Arrays.asList(dl1);
    List<Date> l2= Arrays.asList(dl2);



    for(int i=0;i<l1.size();i++){
        if(l1.get(i).compareTo(l2.get(i))==0){
            System.out.println("Date matched");
        }else{
            System.out.println("Date did not matched");
        }
    }

<强>输出:

Date matched
Date matched
Date matched
Date matched
Date matched
Date matched
Date matched