我是靠谱客的博主 干净冰棍,最近开发中收集的这篇文章主要介绍import java.sql.date_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);

}

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

最后

以上就是干净冰棍为你收集整理的import java.sql.date_java.sql.Date日期比较的全部内容,希望文章能够帮你解决import java.sql.date_java.sql.Date日期比较所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部