1

我想知道是否有一种简单的方法来比较这种格式的两个日期,例如:

Wed, 31 Jul 2013 09:31:51

Mon, 05 Aug 2013 10:18:24

并显示最大的日期?

4

7 回答 7

6

我建议你使用Joda库。使用您拥有的日期信息,创建DateTime实例并调用isBefore()方法来确定哪个先出现。

于 2013-08-07T09:12:19.073 回答
6

我会检查文档,它显示 Date 实现了Comparable<Date>等等

date1.compareTo(date2);

会做你想做的。您可能希望确保它date1不为空。

如果您的日期(实际上)是字符串,则使用SimpleDateFormatparse()方法将字符串转换为日期,然后执行该比较。

正如其他人所建议的那样,Joda 是一个更好的日期/时间库(更好的 API 和线程性能)。

于 2013-08-07T09:13:02.517 回答
3

Date d1, d2; 这将返回最大日期: d1.after(d2) ? d1 : d2;

于 2013-08-07T09:16:17.283 回答
2

首先使用 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 对象

于 2013-08-07T09:14:22.930 回答
0

这对你有用

  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);
于 2013-08-07T09:27:37.793 回答
0

您可以使用 Date 的 getTime() 方法,然后使用 < >。

于 2013-08-07T09:14:21.283 回答
0

你可以使用这个代码

  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?");
        }
于 2013-08-07T09:19:37.943 回答