# Datum vergleichen?



## Gast (14. Nov 2007)

Hallo,
kann mir jemand sagen, wie ich Datum vergleichen kann, das als String gespeichert wird?
Hier habe ich schon mit CompareTo probiert, aber irgendwie klappt es noch nicht ganz, vielleicht ist ein Fehler im Code oder kann ich es irgendwie anders machen?!

```
String a[] = new String[10];
        a[0] = "13.12.2006";
        a[1] = "14.12.2006";
        a[2] = "05.01.2007";
        a[3] = "02.02.2007";
        a[4] = "03.12.2007";
        a[5] = "22.12.2007";
        
        String b = "30.12.2006"; //das wurde selektiert, d.h. die kleiner sind löschen
        
        String neuerArray[] = new String[10];
        
        for(int i=0; i<a.length;i++)
        {
            if(a[i] != null)
            {
                if(a[i].compareTo(b)>=0)
                {
                    neuerArray[i] = a[i];
                    System.out.println(neuerArray[i]);
                }
            }
        }
```

Vielen Dank im Voraus
Gruss


----------



## The_S (14. Nov 2007)

1. Möglichkeit: In ein Datum parsen.
2. Möglichkeit: Zum Vergleichen in ein anderes Format wandeln (yyyy.MM.dd), da du sonst nicht vergleichen kannst.


----------



## Guest (14. Nov 2007)

Kannst du mir vielleicht ein beispiel nennen?
Gruss


----------



## The_S (14. Nov 2007)

Für was?


----------



## Guest (14. Nov 2007)

Achso, ja für die 2.Möglichkeit, ich glaube die ist einfacher!


----------



## The_S (14. Nov 2007)

Und wobei scheiterts? Datum "umparsen" oder vergleichen?


----------



## L-ectron-X (14. Nov 2007)

Um Daten sicher zu vergleichen musst du in deinem Fall den/die Strings in Date-Objekte verwandeln.
Hier mal ein einfaches Beispiel:


```
import java.text.*;
import java.util.*;

public class StringToDate {

   public static void main(String[] args) {
      StringToDate std = new StringToDate();
   
      try {
         System.out.println(std.parseToDate("22.11.2005"));
      }
      catch(ParseException e) {
         e.printStackTrace();
      }
   }
   
   public Date parseToDate(String str) throws ParseException {
      DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
      return formatter.parse(str);

   }
}
```

Danach kannst du auf die zu vergleichenden Date-Objekte die Date-eigene Methode compareTo() anwenden.


----------



## Murray (14. Nov 2007)

Alternativ kannst du die Strings auch in die Komponenten Jahr, Monat und Tag aufteilen und diese Komponenten vergleichen; in etwa so:


```
public int compareDateStrs( String datStr1, String datStr2) {
  String[] comps1 = datStr1.split( ".");
  String[] comps2 = datStr2.split( ".");
  int res = comps1[2].compareTo( comps2[2]); //--- vergleiche Jahre
  if ( res == 0)  res = comps1[1].compareTo( comps2[1]); //--- wenn Jahre gleich, dann vergl. Monate
  if ( res == 0)  res = comps1[0].compareTo( comps2[0]); //--- wenn immer noch gleich, dann vergl. Tage

  return res;
}
```

Das kann man natürlich auch noch in einer Schleife formulieren:

```
public int compareDateStrs( String datStr1, String datStr2) {
  String[] comps1 = datStr1.split( ".");
  String[] comps2 = datStr2.split( ".");

  for ( int comp = 2; comp >= 0; comp--) {
    int res = comps1[comp].compareTo( comps2[comp]);
    if  ( res != 0) return res;
  }
  return 0;
}
```


----------

