Java中相比两个日期对象的大小Date是从Util包下导入的。
    Date date1=new Date("2009/2/2");
    Date date2=new Date("2010/2/2");怎样比较呀?
我尝试过用compareTo了,不行!

解决方案 »

  1.   

    通过 getTime() 得到的毫秒数,进行比较。
      

  2.   

    class Date {
    int year;
    int month;
    int day;

    Date(int y, int m, int d) {
    year = y;
    month = m;
    day = d;
    }

    public int compare(Date date) {
    return year > date.year ? 1 
    : year < date.year ? -1
    : month > date.month ? 1
    : month < date.month ? -1
    : day > date.day ? 1
    : day < date.day ?-1
    : 0;

    }

    public String toString() {
       return "Year:Month:Day -- " + year + "-" + month + "-" + day;
      }
    }class Test {
    public static void main(String args[]) {
    Date[] days = new Date[5];
    days[0] = new Date(2006, 5, 4);
    days[1] = new Date(2006, 7, 4);
    days[2] = new Date(2008, 5, 4);
    days[3] = new Date(2004, 5, 9);
    days[4] = new Date(2004, 5, 4);

    Date d = new Date(2009, 7, 4);

    bubbleSort(days);

    for(int i=0; i<days.length; i++) {
    System.out.println(days[i]);
    }

    System.out.println(binarySearch(days, d));
    }

    static Date[] bubbleSort(Date[] a) {
    int len = a.length;
    for(int i=len-1; i>=1; i--) {
    for(int j=0; j<=i-1; j++) {
    if(a[j].compare(a[i]) > 0) {
    Date temp = a[i];
    a[i] = a[j];
    a[j] = temp;
    }
    }
    }
    return a;
      }

    }
      

  3.   

    date1.after(date2)
    date1.before(date2)
      

  4.   

    date1.after(date2)
    date1.before(date2)
    可以进行比较
      

  5.   


    Date date1=new Date("2009/2/2");
    Date date2=new Date("2010/2/2");
    System.out.println(date1.compareTo(date2)==0?"date1=date2":"date1!=date2");
    System.out.println(date1.compareTo(date2)>0?"date1>date2":"date1<date2");
      

  6.   

    Date aDate = new Date("2010-08-01");
    Date bDate = new Date("2010-08-06");

    if(aDate.before(bDate)){
    System.out.println("之前");
    }else if (aDate.after(bDate)) {
    System.out.println("之后");
    }用这个可以不???
      

  7.   


    public static void main(String[] args) {
    Date date1 = new Date("2010/2/2");
    Calendar c1 = Calendar.getInstance();
    c1.setTime(date1); Date date2 = new Date("2010/2/2");
    Calendar c2 = Calendar.getInstance();
    c2.setTime(date2);

    System.out.println(c1.compareTo(c2));
    }用Calendar
      

  8.   

          这个应该可以 ,因为最近也是在做这个测试时间的比较 。经测试是可以的 。
              Date date1=new Date("2009/2/2");
             Date date2=new Date("2010/2/2");
     
           var startTmp=date1.split("/");   
           var endTmp=date2.split("/");   
           var sd=new Date(startTmp[0],startTmp[1],startTmp[2]);   
           var ed=new Date(endTmp[0],endTmp[1],endTmp[2]);   
           if(sd.getTime()<ed.getTime()){    
            alert("d1<d2");      
            return false;      
            }      
      

  9.   

    上网找个dateUtil  好多各种各样的对时间的处理方法。
      

  10.   

    这个可以
    Date date1=new Date("2009/2/2");
    Date date2=new Date("2010/2/2");System.out.println(date1.compareTo(date2)==0?"date1=date2":"date1!=date2");
    System.out.println(date1.compareTo(date2)>0?"date1>date2":"date1<date2");
      

  11.   


    //调用该方法(主方法) 
    function dateDiff(date1, date2){ 
        var type1 = typeof date1, type2 = typeof date2; 
        if(type1 == 'string') 
        date1 = stringToTime(date1); 
        else if(date1.getTime) 
        date1 = date1.getTime(); 
        if(type2 == 'string') 
        date2 = stringToTime(date2); 
        else if(date2.getTime) 
        date2 = date2.getTime(); 
        return (date1 - date2) / 1000;//结果是秒 
    }//字符串转成Time(dateDiff)所需方法 
    function stringToTime(string){ 
        var f = string.split(' ', 2); 
        var d = (f[0] ? f[0] : '').split('-', 3); 
        var t = (f[1] ? f[1] : '').split(':', 3); 
        return (new Date( 
        parseInt(d[0], 10) || null, 
        (parseInt(d[1], 10) || 1)-1, 
        parseInt(d[2], 10) || null, 
        parseInt(t[0], 10) || null, 
        parseInt(t[1], 10) || null, 
        parseInt(t[2], 10) || null 
        )).getTime(); } //调用 dateDiff("2009-10-10 19:00:00","2009-10-10 18:00:00")
    参考参考 可能对你有帮助。
      

  12.   

    compareTo 和 getTime 转成当前时间的毫秒数 都是可以的
      

  13.   

    Date(String s)是过时的构造函数,你传入的字符串应该是不能解析成你要的日期使用DateFormat对字符串进行日期转换,然后再比较就可以了
      

  14.   

    <a href="www.baidu.com">百度</a>
      

  15.   

    时间的比较可以采用两种方式。
    1,可以通过gettime()转换成毫秒数进行比较
    2。采用date.after(),或date.befor();
      

  16.   

    <a href="www.baidu.com">百度</a>
      

  17.   

    Date date =  new Date(2010-1900,7,13);
    //Date date1 =  new Date(2010-1900,7,12);
    //Date date1 =  new Date(2010-1900,7,13);
    Date date1 =  new Date(2010-1900,7,14);
    System.out.println(date.compareTo(date1));
    compareTo是可以比较的  分别返回 -1 ,0 ,1
      

  18.   

    package com.fit.test;import java.util.Date;public class TestData { /**
     * @param args
     */
    public static void main(String[] args) {
    Date date = new Date(2010,8,13);
    //Date date1 = new Date(2010-1900,7,12);
    //Date date1 = new Date(2010-1900,7,13);
    Date date1 = new Date(2010,8,14);
    System.out.println(date.compareTo(date1));
    }}
    输出结果是:-1
    日期比较式按数字比较的,从左向右依次比较,如果前面的大,就不进行后面的比较了,就返回1,如果形同再往后比较。相同返回0
      

  19.   

    可利用比较器实现
    一实现Comparator<T>接口
    import java.util.*;
    class Data2{
    private int year;
    private int month;
    private int day; public Data2(int y, int m, int d) {
    setYear(y);
    setMonth(m);
    setDay(d);
    } public String toString() {
    return "Year-Month-Day <---> " + getYear() + "-" + getMonth() + "-" + getDay();
    } public void setYear(int year) {
    this.year = year;
    } public int getYear() {
    return year;
    } public void setMonth(int month) {
    this.month = month;
    } public int getMonth() {
    return month;
    } public void setDay(int day) {
    this.day = day;
    } public int getDay() {
    return day;
    }
    }class Data2Comparator implements Comparator<Data2>{ // 实现比较器
    public int compare(Data2 data1,Data2 data2){
    return data1.getYear() > data2.getYear() ? 1 : data1.getYear() < data2.getYear() ? -1
    : data1.getMonth() > data2.getMonth() ? 1 : data1.getMonth() < data2.getMonth() ? -1
    : data1.getDay() > data2.getDay() ? 1 : data1.getDay() < data2.getDay() ? -1 : 0;
    }
    }public class ComparatorTest {
    public static void main(String args[]) {
    Data2[] days = {new Data2(2006, 5, 4),new Data2(2006, 7, 4),new Data2(2008, 5, 4),
    new Data2(2004, 5, 9),new Data2(2004, 5, 4),new Data2(2009, 7, 4),new Data2(2010,8,8)};
    Arrays.sort(days,new Data2Comparator());
    for (int i = 0; i < days.length; i++) {
    System.out.println(days[i]);
    }
    }
    }一实现Comparable<T>接口import java.util.*;
    class Data1 implements Comparable<Data1>{
    private int year;
    private int month;
    private int day;
    public Data1(int y, int m, int d) {
    year = y;
    month = m;
    day = d;
    }
    public String toString() {
    return "Year-Month-Day <---> " + year + "-" + month + "-" + day;
    }
    public int compareTo(Data1 data) {
    return year > data.year ? 1 : year < data.year ? -1
    : month > data.month ? 1 : month < data.month ? -1
    : day > data.day ? 1 : day < data.day ? -1 : 0;
    }
    }public class ComparableTest {
    public static void main(String args[]) {
    Data1[] days = {new Data1(2006, 5, 4),new Data1(2006, 7, 4),new Data1(2008, 5, 4),
    new Data1(2004, 5, 9),new Data1(2004, 5, 4),new Data1(2009, 7, 4),new Data1(2010,8,8)};
    Arrays.sort(days);
    for (int i = 0; i < days.length; i++) {
    System.out.println(days[i]);
    }
    }
    }
      

  20.   

    java.util.Date已经默认实现了Comparable
      

  21.   

    直接调用gettime()就可以了吧,数毫秒数
      

  22.   

    直接用compareTo就可以了肯定没问题
      

  23.   

    long da=date.getTime()  比较大小即可
      

  24.   

    用 >号直接比较
    d1>d2?d1:d2
      

  25.   

    什么事都有啊 compareTo 怎么就不行了 
    compareTo
    public int compareTo(Date anotherDate)比较两个日期的顺序。 指定者:
    接口 Comparable<Date> 中的 compareTo
    参数:
    anotherDate - 要比较的 Date。 
    返回:
    如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。 
    抛出: 
    NullPointerException - 如果 anotherDate 为 null。
    从以下版本开始: 
    1.2