我想知道是否有一种简单的方法来比较这种格式的两个日期,例如:
Wed, 31 Jul 2013 09:31:51
Mon, 05 Aug 2013 10:18:24
并显示最大的日期?
我想知道是否有一种简单的方法来比较这种格式的两个日期,例如:
Wed, 31 Jul 2013 09:31:51
Mon, 05 Aug 2013 10:18:24
并显示最大的日期?
我建议你使用Joda库。使用您拥有的日期信息,创建DateTime
实例并调用isBefore()
方法来确定哪个先出现。
我会检查文档,它显示 Date 实现了Comparable<Date>
等等
date1.compareTo(date2);
会做你想做的。您可能希望确保它date1
不为空。
如果您的日期(实际上)是字符串,则使用SimpleDateFormat的parse()
方法将字符串转换为日期,然后执行该比较。
正如其他人所建议的那样,Joda 是一个更好的日期/时间库(更好的 API 和线程性能)。
Date d1, d2;
这将返回最大日期:
d1.after(d2) ? d1 : d2;
首先使用 SimpleDateFormat 将字符串解析为 Date 对象:
String dateStringA = "Wed, 31 Jul 2013 09:31:51";
String dateStringB = "Mon, 05 Aug 2013 10:18:24";
SimpleDateFormat parserSDF = new SimpleDateFormat("EEE, DD MMM yyyy HH:mm:ss");
Date dateA = parserSDF.parse(dateStringA);
Date dateB = parserSDF.parse(dateStringB);
if (dateA.compareTo(dateB) > 0) {
System.out.println("A bigger");
}
然后使用 compareTo 方法比较 Date 对象
这对你有用
DateFormat df=new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
Date date1=df.parse("Wed, 31 Jul 2013 09:31:51");
Date date2=df.parse("Mon, 05 Aug 2013 10:18:24");
System.out.println(date1.after(date2) ? date1 : date2);
您可以使用 Date 的 getTime() 方法,然后使用 < >。
你可以使用这个代码
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
Date date1 = sdf.parse("Wed, 31 Jul 2013 09:31:51");
Date date2 = sdf.parse("Mon, 05 Aug 2013 10:18:24");
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?");
}