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:用文本方式转格式,日期会向前回滚一天,但是无所谓,两个都转格式之后,我们只需要知道它们之间的先后关系,无需用转换后的日期做运算。所以,可以放心使用
转载于:https://blog.51cto.com/3547071/673301
java.sql.Date日期比较相关推荐
- PreparedStatement 的 setDate 方法设置 java.sql.Date 日期
PreparedStatement 的 setDate 方法设置 java.sql.Date 日期 实现通过JDBC向oracle数据库中插入时间类型数据. 主要通过 PrepareStatement ...
- 取java.sql.date日期_JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转]...
1.如何将java.util.Date转化为java.sql.Date? 转化: java.sql.Date sd; java.util.Date ud; //initialize the ud su ...
- java.util.Date与 java.sql.Date两个包下Date的区别与联系
一般我在项目中导入需要的包,大部分情况下都会根据IDE的提示自动导入默认的包,少数情况下会扫一眼,看看是不是需要的包,极少情况会斟酌一下,确认一下这就是需要的包. 最近在项目中导入JDK中的Date包 ...
- java date只保留年月日_java.util.Date、java.sql.Date、java.sql.Timestamp区别和总结
在web开发中,避免不了对日期的操作,就几种常见的日期操作做个总结(部分参考网络,在此表示感谢): java.util.Date.java.sql.Datej.java.sql.Timestamp j ...
- java比较时间sql_如何正确比较日期 java.sql.Date
import java.sql.Date; ..... .... ... .. . 例如今天是2010-12-2 Date d1 = new Date(System.currentTimeMili() ...
- 【Java】日期字符串转换java.sql.Date对象
日期字符串 → java.sql.Date对象 import java.text.ParseException; import java.text.SimpleDateFormat;public cl ...
- java.sql.Date – Java SQL日期
Java SQL Date class is part of java.sql package. java.sql.Date is a sub class of java.util.Date clas ...
- java.sql.Date引发的日期格式转换错误
记一次springboot开发中使用jackson进行时间格式化时,由于实体类定义的时间类型为java.sql.Date导致格式化转换错误 前端获取到的结果: 数据库存储的时间: 分析: java.s ...
- java sql date 加减_java.sql.Date 日期 加减天数的实现
java.sql.Date 在数据库中存的基本格式:2016-02-24 00:00:00 java.sql.Date继承了java.util.Date 如下: public class Date e ...
最新文章
- 剑指Offer(Java实现)删除链表中重复的结点
- SAP ABAP实用技巧介绍系列之 获得webservice的schema node
- 0330复利计算(修改版)
- ios 旋转屏幕试图切换_TCL·XESS 旋转智屏 A200Pro 评测:方向一换,体验大不相同...
- (01)Verilog HDL介绍
- Python基础----列表
- java 如何将异常_java中的异常处理
- Java集合中List,Set以及Map等集合体系详解(史上最全)
- python查看汉字的编码_python汉字编码
- HaaS506-HD1本地更新固件教程
- 【数据结构】(森林)求以孩子兄弟表示法存储的森林叶子结点数
- Windows文件系统-NTFS文件系统
- 量子计算机 并行,核磁共振量子计算机与并行量子计算
- 七、微信小程序运行报错:Error: AppID 不合法,invalid appid
- 安泰电子科普:电压源和电流源的区别是什么意思
- numpy.loadtxt() 处理csv文件的正确姿势
- 时间戳指什么呢?(通俗易懂的简介大白话)
- MCAFEE杀毒软件无法完全卸载的解决方案
- #金数据#微信小程序#微信小程序跳转金数据小程序并获取问卷信息
- 爱情十三课,爱人的五功能