700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > import java.sql.date_java.sql.Date日期比较

import java.sql.date_java.sql.Date日期比较

时间:2021-09-18 10:16:04

相关推荐

import java.sql.date_java.sql.Date日期比较

import java.sql.Date;

例如今天是-12-2

Date d1 = new Date(System.currentTimeMili());

Date d2 = new Date(System.currentTimeMili()+1);//比d1晚1毫秒日期上,我们认为d1和d2是相等的

但是

System.out.println(d1.before(d2));

输出结果是true;

其实我们希望看到的是这两个对象在日期上是相等的。

因为我们只关心“日期”,而“-12-2”不等于“-12-2”

这个结果显然是我们所不能接受的。

究其原因,是因为Date内封装了一个精确到毫秒的表示时间的

private transient long fastTime;

而before和after的函数的实现如下,都是判断fastTime的值,所以达不到我们只比较日期的要求。

public boolean before(Date when) {

return getMillisOf(this) < getMillisOf(when);

}

public boolean after(Date when) {

return getMillisOf(this) > getMillisOf(when);

}

那么,如何比较日期呢?

思路当然是把日期格式成标准的“年月日”,然后对格式化后的对象进行比较,得到比较的结果

本文给出一种“格式成标准化”的方式

Date d1_temp = java.sql.Date.valueOf(d1.toString());

Date d2_temp = java.sql.Date.valueOf(d2.toString());

System.out.prinltn(d1_temp.equals(d2_temp));//输出结果是true;

System.out.prinltn(d1_temp.before(d2_temp));//输出结果是false;

System.out.prinltn(d1_temp.after(d2_temp));//输出结果是false;

需要逻辑的话,可以写成

if(d1_temp.before(d2_temp)){

.........

}

本文结束。

PS:用文本方式转格式,日期会向前回滚一天,但是无所谓,两个都转格式之后,我们只需要知道它们之间的先后关系,无需用转换后的日期做运算。所以,可以放心使用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。