class Date {
int year, month, 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;
}
}
}
其中compare方法我想用另一种方法写 ,怎么写/
int year, month, 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;
}
}
}
其中compare方法我想用另一种方法写 ,怎么写/
if(year!=date.year&&month!=date.month&&day!=date.day){
return 0;
}
else
return 1;
如果你自己写,compare没什么特别优化的方法,除非你都转化成天比较,但效率没有质的变化
year*365+30*month+day
所以可以不用考慮潤年或月份長短,視為日期31進位,月份12進位,
然後用此基準算出相對的虛擬日數,就可以比大小。
(如果月份可以設定超過12,或日期可以超過31,則必須先轉換成真實日期)public int compare(Date date) {
int a = this.year*12*31+this.month*31+this.day;
int b = date.year*12*31+date.month*31+date.day;
return a>b?1:a=b?0:-1;
}
然後用31之後前面就不能用365必須用372。
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}
}
2楼的看不懂,6楼的貌似Date是类,你怎么把它当成String了?也看不懂。有能说下的吗?