Java中相比两个日期对象的大小Date是从Util包下导入的。
Date date1=new Date("2009/2/2");
Date date2=new Date("2010/2/2");怎样比较呀?
我尝试过用compareTo了,不行!
Date date1=new Date("2009/2/2");
Date date2=new Date("2010/2/2");怎样比较呀?
我尝试过用compareTo了,不行!
解决方案 »
- servlet与oracle数据库中文乱码问题在线等
- <s:date name="" format="">的name取值问题
- 怎样通过cookie记录浏览者访问过的页面
- getSession(false).setFlushMode(FlushMode.AUTO);问题
- hibernate输出sql如何显示参数的实际值而不是?号
- 为什么服务器换IP以后原来网页上上传的图片不显示了
- ejb运行有问题,大牛请进来。。。
- 请教一个问题,我写了一个makefile,但不知道怎么运行,在win2000下的dos提示符下运行make也不行,谢谢大家指教!!!!
- 加载数据库始终找不到,为嘛?jdbc包也加了的。
- 线程同步问题,谁帮忙看看
- 有谁知道用JavaService.exe如何引入多个jar?
- 如何查看一条SQL语句是不是全表扫描
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;
}
}
date1.before(date2)
date1.before(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");
Date bDate = new Date("2010-08-06");
if(aDate.before(bDate)){
System.out.println("之前");
}else if (aDate.after(bDate)) {
System.out.println("之后");
}用这个可以不???
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
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");System.out.println(date1.compareTo(date2)==0?"date1=date2":"date1!=date2");
System.out.println(date1.compareTo(date2)>0?"date1>date2":"date1<date2");
//调用该方法(主方法)
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")
参考参考 可能对你有帮助。
1,可以通过gettime()转换成毫秒数进行比较
2。采用date.after(),或date.befor();
//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
* @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
一实现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]);
}
}
}
d1>d2?d1:d2
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