2013-10-01 13 views
46

Ich arbeite an einer Java-Anwendung, die einen Bericht für eine Dauer generiert, die von einem Benutzer in der Befehlszeile eingegeben wird. Der Benutzer muss die Daten in folgendem Format ein: dd-MM-yyyyWie überprüft man, ob ein Datum in Java größer ist als ein anderes?

> java report startDate endDate

Beispiel:

java Bericht 01-01-2013 31-03-2013

Im Code speichere ich die Daten in zwei Strings. Ich muss sicherstellen, dass das vom Benutzer eingegebene Startdatum ein Datum vor dem Enddatum sein sollte. Gibt es eine eingebaute Funktion, die mir dabei helfen kann, diese beiden Strings zu übergeben?

+2

Zeichenfolge in java.util.Date konvertieren. Datum implementiert vergleichbar. – PeterMmm

+0

Update: Die java.time-Klassen ersetzen die problematischen alten Legacy-Date-Time-Klassen wie "Date" und "Calendar". –

Antwort

84

Sie können Date.before() oder Date.after() oder Date.equals() für den Datumsvergleich verwenden.

von here Genommen:

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateDiff { 

    public static void main(String[] args) 
    { 
     compareDates("2017-01-13 00:00:00", "2017-01-14 00:00:00");// output will be Date1 is before Date2 
     compareDates("2017-01-13 00:00:00", "2017-01-12 00:00:00");//output will be Date1 is after Date2 
     compareDates("2017-01-13 00:00:00", "2017-01-13 10:20:30");//output will be Date1 is before Date2 because date2 is ahead of date 1 by 10:20:30 hours 
     compareDates("2017-01-13 00:00:00", "2017-01-13 00:00:00");//output will be Date1 is equal Date2 because both date and time are equal 
    } 

    public static void compareDates(String d1,String d2) 
    { 
     try{ 
      // If you already have date objects then skip 1 

      //1 
      // Create 2 dates starts 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      Date date1 = sdf.parse(d1); 
      Date date2 = sdf.parse(d2); 

      System.out.println("Date1"+sdf.format(date1)); 
      System.out.println("Date2"+sdf.format(date2));System.out.println(); 

      // Create 2 dates ends 
      //1 

      // Date object is having 3 methods namely after,before and equals for comparing 
      // after() will return true if and only if date1 is after date 2 
      if(date1.after(date2)){ 
       System.out.println("Date1 is after Date2"); 
      } 
      // before() will return true if and only if date1 is before date2 
      if(date1.before(date2)){ 
       System.out.println("Date1 is before Date2"); 
      } 

      //equals() returns true if both the dates are equal 
      if(date1.equals(date2)){ 
       System.out.println("Date1 is equal Date2"); 
      } 

      System.out.println(); 
     } 
     catch(ParseException ex){ 
      ex.printStackTrace(); 
     } 
    } 

    public static void compareDates(Date date1,Date date2) 
    { 
     // if you already have date objects then skip 1 
     //1 

     //1 

     //date object is having 3 methods namely after,before and equals for comparing 
     //after() will return true if and only if date1 is after date 2 
     if(date1.after(date2)){ 
      System.out.println("Date1 is after Date2"); 
     } 

     //before() will return true if and only if date1 is before date2 
     if(date1.before(date2)){ 
      System.out.println("Date1 is before Date2"); 
     } 

     //equals() returns true if both the dates are equal 
     if(date1.equals(date2)){ 
      System.out.println("Date1 is equal Date2"); 
     } 

     System.out.println(); 
    } 
} 
9

die beiden Termine Parse firstDate und secondDateSimpleDateFormat verwenden.

firstDate.after(secondDate);

firstDate.before(secondDate);

8

die Zeichenfolge in Datum Parse, dann vergleichen compareTo verwenden, before oder nach

Date d = new Date(); 
d.compareTo(anotherDate) 

d.h

Date date1 = new SimpleDateFormat("MM/dd/yyyy").parse(date1string) 
Date date2 = new SimpleDateFormat("MM/dd/yyyy").parse(date2string) 

date1.compareTo(date2); 

javadoc für compareTo http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#compareTo(java.util.Date)

+2

Gibt 'den Wert 0 zurück, wenn das Argument Datum diesem Datum entspricht; ein Wert kleiner als 0, wenn dieses Datum vor dem Date-Argument liegt; und ein Wert größer als 0, wenn dieses Datum nach dem Date-Argument liegt. 'und' NullPointerException - falls anotherDate null ist. ' –

Verwandte Themen