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日期比较相关推荐

  1. PreparedStatement 的 setDate 方法设置 java.sql.Date 日期

    PreparedStatement 的 setDate 方法设置 java.sql.Date 日期 实现通过JDBC向oracle数据库中插入时间类型数据. 主要通过 PrepareStatement ...

  2. 取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 ...

  3. java.util.Date与 java.sql.Date两个包下Date的区别与联系

    一般我在项目中导入需要的包,大部分情况下都会根据IDE的提示自动导入默认的包,少数情况下会扫一眼,看看是不是需要的包,极少情况会斟酌一下,确认一下这就是需要的包. 最近在项目中导入JDK中的Date包 ...

  4. java date只保留年月日_java.util.Date、java.sql.Date、java.sql.Timestamp区别和总结

    在web开发中,避免不了对日期的操作,就几种常见的日期操作做个总结(部分参考网络,在此表示感谢): java.util.Date.java.sql.Datej.java.sql.Timestamp j ...

  5. java比较时间sql_如何正确比较日期 java.sql.Date

    import java.sql.Date; ..... .... ... .. . 例如今天是2010-12-2 Date d1 = new Date(System.currentTimeMili() ...

  6. 【Java】日期字符串转换java.sql.Date对象

    日期字符串 → java.sql.Date对象 import java.text.ParseException; import java.text.SimpleDateFormat;public cl ...

  7. 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 ...

  8. java.sql.Date引发的日期格式转换错误

    记一次springboot开发中使用jackson进行时间格式化时,由于实体类定义的时间类型为java.sql.Date导致格式化转换错误 前端获取到的结果: 数据库存储的时间: 分析: java.s ...

  9. 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 ...

最新文章

  1. 剑指Offer(Java实现)删除链表中重复的结点
  2. SAP ABAP实用技巧介绍系列之 获得webservice的schema node
  3. 0330复利计算(修改版)
  4. ios 旋转屏幕试图切换_TCL·XESS 旋转智屏 A200Pro 评测:方向一换,体验大不相同...
  5. (01)Verilog HDL介绍
  6. Python基础----列表
  7. java 如何将异常_java中的异常处理
  8. Java集合中List,Set以及Map等集合体系详解(史上最全)
  9. python查看汉字的编码_python汉字编码
  10. HaaS506-HD1本地更新固件教程
  11. 【数据结构】(森林)求以孩子兄弟表示法存储的森林叶子结点数
  12. Windows文件系统-NTFS文件系统
  13. 量子计算机 并行,核磁共振量子计算机与并行量子计算
  14. 七、微信小程序运行报错:Error: AppID 不合法,invalid appid
  15. 安泰电子科普:电压源和电流源的区别是什么意思
  16. numpy.loadtxt() 处理csv文件的正确姿势
  17. 时间戳指什么呢?(通俗易懂的简介大白话)
  18. MCAFEE杀毒软件无法完全卸载的解决方案
  19. #金数据#微信小程序#微信小程序跳转金数据小程序并获取问卷信息
  20. 爱情十三课,爱人的五功能

热门文章

  1. Xcode创建的工程使用xcodebuild命令行编译
  2. VUE环境搭建和项目创建-win平台
  3. 一起来玩玩WebGL--第一弹
  4. python 通过 Snap7 与 PLC 实现数据通信
  5. 亚信科技:新业务成高速增长源动力,吹响全栈式数智化转型号角
  6. nz-table数据动态横向合并
  7. OSI/RM各层功能—物理层、数据链路层
  8. 海康威视工业相机SDK二次开发环境配置—Windows10+VS2017
  9. Java语言的特性和优点
  10. 聊一聊数学中的基本定理(三)——代数基本定理