在java.util.Date中,如何比较两个Date的大小,精确到分

如题。。麻烦给位了

Date date1 = 。。。;
Date date2 = 。。。;
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
cal1.set(Calendar.SECOND, 0);
cal1.set(Calendar.MILLISECOND, 0);
cal2.set(Calendar.SECOND, 0);
cal2.set(Calendar.MILLISECOND, 0);
//cal1.before(....)
//cal1.compareTo(...)

[code="java"]long diff = dateFirst.getTime() - dateLast.getTime();

[/code]

[code="java"]
public class Temp {

public static void main(String[] args) {
    Date d1 = new Date();

    Date d2 = new Date();

    if (d1.before(d2)) {
        System.out.println("d1 比 d2 早"
                + (d1.getMinutes() - d2.getMinutes()));
    } else {
        System.out
                .println("d1 比 d2晚" + (d2.getMinutes() - d1.getMinutes()));
    }
}

}
[/code]

不过, 最好使用 Calendar 来实现,需要的话,我可以给出 Calendar 的实现,而且这也是推荐的实现方法

Calendar cal = Calendar.getInstance();
cal.setTime(date);

再通过Calendar#set(int field, int value) 方法将不必要的时间设置为0

然后就可以通过Calendar#compareTo方法进行比较了

Date date1 = new Date(2011, 8, 22, 20, 19);
Date date2 = new Date(2011, 8, 22, 20, 18);

date1.compareTo(date2);

这个比较精确到秒,完全满足你要精确到分的要求。

8) 晕看来理解错误楼主意思了·
楼主说精确到秒?
是不是 2011-08-22 14:52:30 2011-08-22 14:52:29 精确到秒时这2个时间是相等的?不知道是不是这意思?

晕看来理解错误楼主意思了·
楼主说精确到分?
是不是 2011-08-22 14:52:30 2011-08-22 14:52:29 精确到分,这2个时间是相等的?不知道是不是这意思?

[code="java"] DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String s1 = df.format(date1);
String s2 = df.format(date2);

    System.out.println(s1.compareTo(s2));[/code]

支持 ymmihw

[code="java"]
public static final SimpleDateFormat FORMAT = new SimpleDateFormat(
"yy/MM/dd HH:mm");

public static void compare(Date d1, Date d2) {
    String str1 = FORMAT.format(d1);
    System.out.println("str1: " + str1);
    String str2 = FORMAT.format(d2);
    System.out.println("str2: " + str2);

    int result = str1.compareTo(str2);
    if (result > 0) {
        System.out.println(str1 + " 晚于 " + str2);
    } else if (result == 0) {
        System.out.println(str1 + " 等于 " + str2);
    } else {
        System.out.println(str1 + " 早于 " + str2);
    }
}

public static void main(String[] args) {
    Date d1 = new Date();
    Date d2 = new Date(d1.getTime() + 70 * 1000);
    compare(d1, d2);
}

[/code]

我这边运行的结果为:
str1: 11/08/22 21:23
str2: 11/08/22 21:24
11/08/22 21:23 早于 11/08/22 21:24

同理,若是将 d2 的值设为:new Date(d1.getTime() - 70 * 1000);
那么输出结果将为:
str1: 11/08/22 21:24
str2: 11/08/22 21:22
11/08/22 21:24 晚于 11/08/22 21:22

用org.apache.commons.lang.time.DateUtils

Date now = new Date( );
Date dtmTime = DateUtils.truncate(now, Calendar.MINUTE);
取整到分然后用compareTo比较

要么使用getTime()/60000取整后比较

getTime比较