java.sql.Date⽇期⽐较
import java.sql.Date;
例如今天是2010-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;
其实我们希望看到的是这两个对象在⽇期上是相等的。
因为我们只关⼼“⽇期”,⽽“2010-12-2”不等于“2010-12-2”
这个结果显然是我们所不能接受的。
究其原因,是因为Date内封装了⼀个精确到毫秒的表⽰时间的
private transient long fastTime;
⽽before和after的函数的实现如下,都是判断fastTime的值,所以达不到我们只⽐较⽇期的要求。
public boolean before(Date when) {
return getMillisOf(this) < getMillisOf(when);
java valueof}
public boolean after(Date when) {
return getMillisOf(this) > getMillisOf(when);
}
那么,如何⽐较⽇期呢?
思路当然是把⽇期格式成标准的“年⽉⽇”,然后对格式化后的对象进⾏⽐较,得到⽐较的结果
本⽂给出⼀种“格式成标准化”的⽅式
Date d1_temp = java.sql.Date.String());
Date d2_temp = java.sql.Date.String());
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:⽤⽂本⽅式转格式,⽇期会向前回滚⼀天,但是⽆所谓,两个都转格式之后,我们只需要知道它们之间的先后关系,⽆需⽤转换后的⽇期做运算。所以,可以放⼼使⽤
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论