web-dev-qa-db-fra.com

Comment vérifier si une date est supérieure à une autre en Java?

Je travaille sur une application Java qui génère un rapport pour une durée entrée par un utilisateur dans la ligne de commande. L'utilisateur doit entrer les dates au format suivant: jj-MM-aaaa

> Java report startDate endDate

Exemple:

Rapport Java 01-01-2013 31-03-2013

Dans le code, je sauvegarde les dates en deux chaînes. Je dois m'assurer que la date de début entrée par l'utilisateur doit être antérieure à la date de fin. Existe-t-il une fonction intégrée qui peut m'aider à atteindre cet objectif en lui passant ces deux chaînes?

62
Manas

Vous pouvez utiliser Date.before () ou Date.after () ou Date.equals () pour la comparaison de dates.

Tiré de ici :

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();
    }
}
102
SpringLearner

Analyser les deux dates firstDate et secondDate en utilisant SimpleDateFormat.

firstDate.after(secondDate);

firstDate.before(secondDate);

10
newuser

Analyser la chaîne en date, puis comparer à l'aide de compareTo, before ou après

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

c'est à dire

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

date1.compareTo(date2);

javadoc pour compareTo http://docs.Oracle.com/javase/6/docs/api/Java/util/Date.html#compareTo (Java.util.Date)

9
Jayaram

Vous devez utiliser un SimpleDateFormat (dd-MM-yyyy sera le format) pour analyser les 2 chaînes en entrée Date objets puis utilisez les fonctions Date#before(otherDate) (ou) Date#after(otherDate) pour les comparer.

Essayez d'implémenter le code vous-même.

4
SudoRahul