如何比较String格式的两个日期?

时间:2015-09-01 11:39:20

标签: java date jodatime

比较String格式的两个日期的最简单方法是什么?我需要知道bytes()之前/之后是date1

date2

6 个答案:

答案 0 :(得分:10)

对于更通用的方法,您可以将它们转换为定义格式的Date个对象,然后使用适当的方法:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

Date date1 = format.parse(date1);
Date date2 = format.parse(date2);

if (date1.compareTo(date2) <= 0) {
    System.out.println("earlier");
}

答案 1 :(得分:5)

在这种情况下,您只需比较字符串date1.compareTo(date2)即可。

编辑:但是,正确的方法是使用SimpleDateFormat

DateFormat f = new SimpleDateFormat("yyyy-mm-dd");
Date d1 = f.parse(date1, new ParsePosition(0));
Date d2 = f.parse(date2, new ParsePosition(0));

然后比较日期:

d1.compareTo(d2);

如果d1d2之前,则比较将返回负值;如果在d1之后d2,则比较将返回正值。

答案 2 :(得分:4)

使用JodaTime,只需:

DateTime d1 = DateTime.parse(date1);
DateTime d2 = DateTime.parse(date2);

Assert.assertTrue(d1.isBefore(d2));
Assert.assertTrue(d2.isAfter(d1));

答案 3 :(得分:3)

我建议你将它们转换为Date个对象。

String date1 = "2015-12-01";
String date2 = "2015-12-31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.parse(date1).before(sdf.parse(date2)));

将它们比作:

if(date2 .compareTo(date1) > 0){
    System.out.println(" ---- ");
}

不是一个理想的选项(date1和date2是字符串),因为它失去了灵活性,可能导致自己的问题。

答案 4 :(得分:1)

您只需将字符串转换为日期:

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

if(date1.equals(date2)){
            System.out.println("Date1 is equal Date2");
}

然后比较完成如下:     如果(date1.after(DATE2)){                 System.out.println(“Date1在Date2之后”);     }

ParseException

如果我没记错,可以使用GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); 来处理

答案 5 :(得分:0)

是的,您可以按如下方式对此进行比较:

Date date1 = new Date();
Date date2 = new Date();

if(date1.before(date2)){
    // statement
}

if(date1.after(date2)){
    // statement
}