比较日期和时间

时间:2014-01-07 05:54:40

标签: java netbeans

我需要比较这两个日期,并知道它们是相等的还是<或>

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

public class App 
{
     public static void main( String[] args ) 
    {
        try{

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date1 = sdf.parse("2009-12-31");
            Date date2 = sdf.parse("2010-01-31");

            System.out.println(sdf.format(date1));
            System.out.println(sdf.format(date2));

            if(date1.compareTo(date2)>0){
                System.out.println("Date1 is after Date2");
            }else if(date1.compareTo(date2)<0){
                System.out.println("Date1 is before Date2");
            }else if(date1.compareTo(date2)==0){
                System.out.println("Date1 is equal to Date2");
            }else{
                System.out.println("How to get here?");
            }

        }catch(ParseException ex){
            ex.printStackTrace();
        }
    }
}

上面的代码无法正常工作..我试过这种格式MM-dd-YYYYit正在检查oly如果年份是&gt;比它给出的第一个日期>。 例如:我用这种方式比较d1 = 01-07-2014 d2 = 01-06-2014 ..结果应该是d1> d2但它告诉d1等于d2

请帮助我

4 个答案:

答案 0 :(得分:2)

Java.util.Date类具有比较日期的before和after方法。

检查date1.before(date2)date1.after(date2)

答案 1 :(得分:2)

java.util.Date有一个前后方法,完全符合您的目的。

答案 2 :(得分:0)

添加此代码而不是代码。这是在Java中比较Date的最佳方法。

    if(date1.after(date2)){
        System.out.println("Date1 is after Date2");
    }else if(date1.before(date2)){
        System.out.println("Date1 is before Date2");
    }else {
        System.out.println("Date1 is equal to Date2");
    }

答案 3 :(得分:0)

您使用的格式是不正确的模式,象征着年份是'y'而不是'Y'。所以模式应该是正确的“MM-dd-yyyy”而不是“MM-dd-YYYY”

另外你可以使用相同的本地日期,

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

import org.junit.Test;

public class LocalDateTest {


    @Test
    public void compare_local_dates() throws Exception {

        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate date1 = LocalDate.parse("2009-12-31", pattern);
        LocalDate date2 = LocalDate.parse("2010-01-31", pattern);

        System.out.println(pattern.format(date1));
        System.out.println(pattern.format(date2));


        if(date1.isAfter(date2)){
            System.out.println("Date1 is after Date2");
        }else if(date1.isBefore(date2)){
            System.out.println("Date1 is before Date2");
        }else if(date1. isEqual(date2)){
            System.out.println("Date1 is equal to Date2");
        }else{
            System.out.println("How to get here?");
        }


    }

}