【原创】如何正确比较日期 java.sql.Date
来源:互联网 发布:哈利波特 电影 知乎 编辑:程序博客网 时间:2024/06/15 13:06
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:用文本方式转格式,日期会向前回滚一天,但是无所谓,两个都转格式之后,我们只需要知道它们之间的先后关系,无需用转换后的日期做运算。所以,可以放心使用
- 【原创】如何正确比较日期 java.sql.Date
- Java Date日期比较
- util.Date与sql.Date如何比较
- Java Date Timestamp 日期比较的陷阱
- javascript中如何正确将日期(Date)字符串,转换为日期(Date)对象?
- javascript中如何正确将日期(Date)字符串,转换为日期(Date)对象?
- Date 日期比较
- Date日期类型比较
- java date 日期 date
- java.util.Date和java.sql.Date的比较
- JAVA日期时间如何比较
- oracle与java 日期处理 date/time/imestamp/java.sql.date/java.util.date
- SQL Server 如何比较日期的大小
- java中比较两个日期Date的大小
- SQL Date 日期函数
- 如何将java.util.Date转化为java.sql.Date?
- 如何将java.util.Date转换成java.sql.Date
- Java的日期与时间(五)java.sql.Date
- 微软是如何测试的
- 感觉还不错
- 不停顿地练习
- Windows CE下的USB设备驱动程序开发实例
- Java内存模型
- 【原创】如何正确比较日期 java.sql.Date
- C# listbox remove selected items
- window.closed 属性的一个bug
- I felt sort of ill
- 配置AppFabric Caching Server 的缓存客户端
- 在qt中调用libvlc.dll
- Qt_2——MyWebWidget
- Oracle 连接 TNS timeout 问题
- Question 29: The C++ code below generates a compiler error. Which of the following solutions can be used to correctly access the