比较两个日期的最简单方法,如果我有相同的模式。
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.after(date2)){
System.out.println("Date1 is after Date2");
}
if(date1.before(date2)){
System.out.println("Date1 is before Date2");
}
if(date1.equals(date2)){
System.out.println("Date1 is equal Date2");
}
想要比较具有不同模式的2个日期。
例如。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2009-12-31");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
Date date2 = sdf2.parse("12/12/2012");
我怎样才能做同样的事情
答案 0 :(得分:2)
您可以用同样的方式比较日期。 SimpleDateFormat
只是一种在不同格式中打印日期(或从中解析日期)的方法。 Java了解它们并且可以将它们作为日期进行比较,无论您如何格式化它们。
答案 1 :(得分:1)
即使在解析了2种不同格式的2个不同日期之后,parse()
方法的输出也将成为两种情况下的标准java.util.Date
对象。所以你可以照常比较它们。
解析它们的格式无关紧要,因为在这两种情况下,你有两个java.util.Date
个对象,并且在所有情况下比较它们都是相同的。
答案 2 :(得分:1)
您将sdf替换为sdf2
更改为此代码,它将起作用:
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
Date date2 = sdf2.parse("12/12/2012");
您使用了错误的引用sdf而不是sdf2