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_如何正确比较日期 java.sql.Date相关推荐

  1. Java验证时间格式是否正确

    Java验证时间格式是否正确 /*** @author * @Description 时间格式校验* @Version 1.0* @since */ public class IsLegalDate ...

  2. java核心面试_不正确的核心Java面试答案

    java核心面试 总览 在Internet上,Java面试问题和答案从一个网站复制到另一个网站. 这可能意味着错误或过时的答案可能永远不会得到纠正. 这是一些不太正确或已经过时的问题和答案. 即是Ja ...

  3. java 简单事件的使用,如何正确的使用Java事件通知(1)

    如何正确的使用Java事件通知(1) 通过实现观察者模式来提供 Java 事件通知(Java event notification)似乎不是件什么难事儿,但这过程中也很容易就掉进一些陷阱.本文介绍了我 ...

  4. java sql 日期_java.sql.Date

    java.sql.Date 1 java.sql.Date介绍 java.sql.Date类仅表示java中的日期.它继承了java.util.Date类. java.sql.Date实例在JDBC中 ...

  5. java格式化时间博客园_Java 日期格式化工具类

    importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava. ...

  6. Java把时间毫秒数转换成日期和时间

    例如给定毫秒值: 1570650412089 转换方法: public static void main(String[] args) {long milliSecond = 157065041208 ...

  7. 美国的时间格式 -- 复杂格式的日期转换 使用Date.parse(“复杂的格式”)方法。

    使用这个方法 long time = Date.parse("Sun Feb 26 10:31:58 +0800 2012");SimpleDateFormat sdf=new S ...

  8. java 获取当前月份减1_java String 日期 转成 Date, 月份减1

    ainiyanyan13142007-03-30 22:39 1 编写applet 程序的页面输出 红色的 "hello would !" 2 请编写application 计算并 ...

  9. java两个字符串 相隔天数_关于Java: Joda-Time时间中两个日期之间的天数

    我如何找到两个joda time DateTime实例之间的天数差异?如果开始时间是星期一,结束时间是星期二,那么不管开始和结束日期的小时/分钟/秒是多少,返回值都应该是1. 如果从晚上开始到早上结束 ...

最新文章

  1. java爬树方法_Java-grandMother.java
  2. 【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
  3. 玩转树莓派——安装系统
  4. JavaScript prototype constructor __proto__
  5. Java Longest Palindromic Substring(最长回文字符串)
  6. GYM101933I - Intergalactic Bidding
  7. 机器学习-吴恩达-笔记-3-正则化
  8. 2022“点点点”测试员如何上岸测试开发岗?附完整学习路线!
  9. MVC Razor基础
  10. C++生成随机数:几何分布(geometric distribution)
  11. 用envi裁剪下来的图像是黑色的_ENVI进行图像裁剪.doc
  12. jquery的事件命名空间详解
  13. 论信息系统人力资源管理
  14. 嵌入式系统开发笔记91:认识ARM微控制器架构
  15. Arduino之个人健康助理——简易智能药盒系列2
  16. Mingw-w64 -7.3.0版本百度网盘下载地址
  17. 详解C++中的构造函数
  18. 孙鑫 第十七课进程间通信之三 命名管道
  19. 计算机取证木马取证实验报告,计算机取证技术实验报告.doc
  20. 焊接机器人控制系统原理分析

热门文章

  1. 一般一个前端项目完成需要多久_一种按周迭代的敏捷式项目管理方法
  2. LeetCode-best time to buy and sell stock 2 数组
  3. Postman安装与使用(网络请求神器)--post、get请求
  4. 载波聚合或双连接的方式进行_处理载波聚合及双连接的装置及方法与流程
  5. 计算机算法知识总结,移动笔试知识点之--计算机类-数据结构与算法知识点总结.pdf...
  6. java显示星期几_Java 使用日历显示星期几
  7. 移动app显示远程服务器错误,KIS移动应用常见问题汇总
  8. 计算机信息技术为教育带来的变化,信息技术对课堂教学带来的变化
  9. mysql怎么给表设置查询语句_MySQL查询语句简单操作示例
  10. HTML5 audio 如何实现播放多个MP3音频