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

  1. java date 转换sql date_java.util.Date和java.sql.Date之间的转换

    java.util.Date是在除了SQL语句的情况下面使用的. java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分 它 们都有getTime方法返回毫秒数,自然就可以直接构 ...

  2. java date转sql date_java.util.Date和java.sql.Date转换(转)

    Date 的类型转换:首先记住java.util.Date 为 java.sql.Date的父类 1.将java.util.Date 转换为 java.sql.Date java.lang.Class ...

  3. new java.util.date_java.util.Date的替代品

    注意:对于Java 8及更高版本,这个答案很可能不再准确,现在有一个 better date/calendar API. 标准备用是使用日历对象. Calendar cal = Calendar.ge ...

  4. Java String类型转换成Date日期类型

    //格式化数据 SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = ...

  5. Java Calendar日历与Date日期的相互转换

    Calendar转化为Data 返回标准化的Date public static Date calendarToData(int year, int month, int day) {Calendar ...

  6. import java.io6_JavaIO(六) 转换流

    InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符.它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集.转换流是一种 ...

  7. JAVA中String与Date类型互转

    String2Date              &&      Date2String 首先,感谢阅览,能够帮到你是我的荣幸,有不足的挺多指教. 在java中不支持String和Da ...

  8. java.sql.Date日期比较

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

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

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

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

最新文章

  1. 进阶学习(4.4) JVM GC Root 判定, 垃圾的判定
  2. python爬虫(五)_urllib2:urlerror和httperror
  3. 第5周实践项目2 链栈的算法库建立
  4. Web开发模式【Mode I 和Mode II的介绍、应用案例】
  5. SAP Fiori Launchpad get role based page usages
  6. 跟我一起学.NetCore之配置初体验
  7. linux之/usr/local/bin和/usr/bin区别
  8. 数据库索引的数据结构b+树
  9. 《ELK Stack权威指南(第2版)》一3.5 Windows系统日志
  10. HBase核心知识和应用案例
  11. java synchronized 参数_java – 将参数传递给synchronized块的目的是什么?
  12. SpringBoot自定义注解接收json参数
  13. 叫号系统服务器,排队叫号系统设置方法
  14. HITWH-PYTHON学习笔记(2)-20170706
  15. 【面试题】单链表的操作1
  16. jet-cp4005,linux双面打印,HP LaserJet Pro M706n 双面打印 技术规格 | HP®People's Republic of China...
  17. 一个c语言源文件可以包含两个以上main,二级C语言习题汇总及标准答案.doc
  18. 好用android平板,好用却不平凡,Remix OS让安卓平板活过来!
  19. 酷狗音乐车载Android版,酷狗音乐车载版
  20. html+css取消下划线

热门文章

  1. web开发需要注意/n的问题
  2. mysql 修改登录用户名和密码
  3. 步步为营 .NET三层架构解析 三、SQLHelper设计
  4. LooseScan Strategy
  5. 基于Web应用的性能分析及优化案例
  6. 智慧安防体系包括哪些智能化设备?
  7. 公司打卡少几秒分析--学会拒绝,学会选择
  8. ISA 发布内网 NLB
  9. IIS出现server application error的解决办法
  10. Linux设备驱动模型-Bus