2016-08-26 1 views
2

全く同じ日付を含む2つのリストがありますが、書式は異なります。どのように私はそれらの2つのリストは、日付の形式を無視して同等であることを比較することができますか?日付を含むString型の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] 

私はとにかくがあれば、私はこれを行うことができます知ってみましょう。

+3

あなたは、実際の日付を持つ2つのリストを持っているように、両方のリストの日付を解析します。次に、これら2つのリストを比較します。 – aioobe

+0

あなたは 'List '権利を持っていますか? –

+0

はい私はリストを持っています。 –

答えて

1

更新日:あなたは、2つの日付を比較するには、このロジックを使用することができます

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 
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); 
+0

' - >'そのオペレータは何と呼ばれていますか?私はjavaで前にそれを見ていない。 –

+0

これはJava8の表現です。ラムダ。 – Tugrul

+1

@Jean Logeart:java.time.format.DateTimeParseException:テキスト'22 .07.2016 'をインデックス0で解析できませんでした。 –

関連する問題