我有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]
让我知道无论如何我都可以这样做。
答案 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