Date是从Util包下导入的。
Date date1=new Date("2009/2/2");
Date date2=new Date("2010/2/2");
怎样比较呀?
我尝试过用compareTo了,不行!
49 个解决方案
#1
我觉得可以。
#2
通过 getTime() 得到的毫秒数,进行比较。
#3
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;
}
}
#4
date1.after(date2)
date1.before(date2)
date1.before(date2)
#5
date1.after(date2)
date1.before(date2)
可以进行比较
date1.before(date2)
可以进行比较
#6
。。 OK
#7
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");
#8
+1
#9
+2
#10
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("之后");
}
用这个可以不???
Date bDate = new Date("2010-08-06");
if(aDate.before(bDate)){
System.out.println("之前");
}else if (aDate.after(bDate)) {
System.out.println("之后");
}
用这个可以不???
#11
Lz 尝试一下,应该没有问题~~
#12
("2010-08-01") 你的字符串格式错了
#13
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
#14
这个应该可以 ,因为最近也是在做这个测试时间的比较 。经测试是可以的 。
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;
}
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;
}
#15
不是错了,是那个构造过时了,但可以用。
#16
呵呵,是错了,应该是 “/”,不好意思
#17
上网找个dateUtil 好多各种各样的对时间的处理方法。
#18
这个可以
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");
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");
#19
//调用该方法(主方法)
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")
参考参考 可能对你有帮助。
#20
compareTo 和 getTime 转成当前时间的毫秒数 都是可以的
#21
Date(String s)是过时的构造函数,你传入的字符串应该是不能解析成你要的日期
使用DateFormat对字符串进行日期转换,然后再比较就可以了
使用DateFormat对字符串进行日期转换,然后再比较就可以了
#22
#23
大家都是好牛皮的一个呀
#24
<a href="www.baidu.com">百度</a>
#25
把时间转换为长整型比较
#26
你直接相减就可以了呀。
#27
时间的比较可以采用两种方式。
1,可以通过gettime()转换成毫秒数进行比较
2。采用date.after(),或date.befor();
1,可以通过gettime()转换成毫秒数进行比较
2。采用date.after(),或date.befor();
#28
<a href="www.baidu.com">百度</a>
#29
我感觉这样也可以
#30
LG比较时间的方法很多,自己去试一试 看哪种方法最方便 掌握一种就可以了
#31
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
//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
#32
这个好用
#33
怎样直接相减呀
#34
取得毫秒.然后相减啊
#35
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
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
#36
这位兄台的html学的不错
#37
可利用比较器实现
一实现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]);
}
}
}
一实现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]);
}
}
}
#38
java.util.Date已经默认实现了Comparable
#39
四楼的 就是正解,简单方便。咋不给分哦
#40
直接调用gettime()就可以了吧,数毫秒数
#41
getTime()
#42
好好好,答案可是五花八门呀,收获甚高!
#43
顶
#44
直接用compareTo就可以了。。。肯定没问题
#45
long da=date.getTime() 比较大小即可
#46
用 >号直接比较
d1>d2?d1:d2
d1>d2?d1:d2
#47
差不多可以吧。
#48
什么事都有啊 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
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
#49
++++
#1
我觉得可以。
#2
通过 getTime() 得到的毫秒数,进行比较。
#3
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;
}
}
#4
date1.after(date2)
date1.before(date2)
date1.before(date2)
#5
date1.after(date2)
date1.before(date2)
可以进行比较
date1.before(date2)
可以进行比较
#6
。。 OK
#7
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");
#8
+1
#9
+2
#10
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("之后");
}
用这个可以不???
Date bDate = new Date("2010-08-06");
if(aDate.before(bDate)){
System.out.println("之前");
}else if (aDate.after(bDate)) {
System.out.println("之后");
}
用这个可以不???
#11
Lz 尝试一下,应该没有问题~~
#12
("2010-08-01") 你的字符串格式错了
#13
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
#14
这个应该可以 ,因为最近也是在做这个测试时间的比较 。经测试是可以的 。
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;
}
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;
}
#15
不是错了,是那个构造过时了,但可以用。
#16
呵呵,是错了,应该是 “/”,不好意思
#17
上网找个dateUtil 好多各种各样的对时间的处理方法。
#18
这个可以
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");
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");
#19
//调用该方法(主方法)
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")
参考参考 可能对你有帮助。
#20
compareTo 和 getTime 转成当前时间的毫秒数 都是可以的
#21
Date(String s)是过时的构造函数,你传入的字符串应该是不能解析成你要的日期
使用DateFormat对字符串进行日期转换,然后再比较就可以了
使用DateFormat对字符串进行日期转换,然后再比较就可以了
#22
#23
大家都是好牛皮的一个呀
#24
<a href="www.baidu.com">百度</a>
#25
把时间转换为长整型比较
#26
你直接相减就可以了呀。
#27
时间的比较可以采用两种方式。
1,可以通过gettime()转换成毫秒数进行比较
2。采用date.after(),或date.befor();
1,可以通过gettime()转换成毫秒数进行比较
2。采用date.after(),或date.befor();
#28
<a href="www.baidu.com">百度</a>
#29
我感觉这样也可以
#30
LG比较时间的方法很多,自己去试一试 看哪种方法最方便 掌握一种就可以了
#31
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
//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
#32
这个好用
#33
怎样直接相减呀
#34
取得毫秒.然后相减啊
#35
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
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
#36
这位兄台的html学的不错
#37
可利用比较器实现
一实现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]);
}
}
}
一实现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]);
}
}
}
#38
java.util.Date已经默认实现了Comparable
#39
四楼的 就是正解,简单方便。咋不给分哦
#40
直接调用gettime()就可以了吧,数毫秒数
#41
getTime()
#42
好好好,答案可是五花八门呀,收获甚高!
#43
顶
#44
直接用compareTo就可以了。。。肯定没问题
#45
long da=date.getTime() 比较大小即可
#46
用 >号直接比较
d1>d2?d1:d2
d1>d2?d1:d2
#47
差不多可以吧。
#48
什么事都有啊 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
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
#49
++++