import java.sql.date_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:用文本方式转格式,日期会向前回滚一天,但是无所谓,两个都转格式之后,我们只需要知道它们之间的先后关系,无需用转换后的日期做运算。所以,可以放心使用
import java.sql.date_java.sql.Date日期比较相关推荐
- java date 转换sql date_java.util.Date和java.sql.Date之间的转换
java.util.Date是在除了SQL语句的情况下面使用的. java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分 它 们都有getTime方法返回毫秒数,自然就可以直接构 ...
- 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 ...
- new java.util.date_java.util.Date的替代品
注意:对于Java 8及更高版本,这个答案很可能不再准确,现在有一个 better date/calendar API. 标准备用是使用日历对象. Calendar cal = Calendar.ge ...
- Java String类型转换成Date日期类型
//格式化数据 SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = ...
- Java Calendar日历与Date日期的相互转换
Calendar转化为Data 返回标准化的Date public static Date calendarToData(int year, int month, int day) {Calendar ...
- import java.io6_JavaIO(六) 转换流
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符.它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集.转换流是一种 ...
- JAVA中String与Date类型互转
String2Date && Date2String 首先,感谢阅览,能够帮到你是我的荣幸,有不足的挺多指教. 在java中不支持String和Da ...
- java.sql.Date日期比较
import java.sql.Date; 例如今天是2010-12-2 Date d1 = new Date(System.currentTimeMili()); Date d2 = new Dat ...
- 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 ...
- PreparedStatement 的 setDate 方法设置 java.sql.Date 日期
PreparedStatement 的 setDate 方法设置 java.sql.Date 日期 实现通过JDBC向oracle数据库中插入时间类型数据. 主要通过 PrepareStatement ...
最新文章
- 进阶学习(4.4) JVM GC Root 判定, 垃圾的判定
- python爬虫(五)_urllib2:urlerror和httperror
- 第5周实践项目2 链栈的算法库建立
- Web开发模式【Mode I 和Mode II的介绍、应用案例】
- SAP Fiori Launchpad get role based page usages
- 跟我一起学.NetCore之配置初体验
- linux之/usr/local/bin和/usr/bin区别
- 数据库索引的数据结构b+树
- 《ELK Stack权威指南(第2版)》一3.5 Windows系统日志
- HBase核心知识和应用案例
- java synchronized 参数_java – 将参数传递给synchronized块的目的是什么?
- SpringBoot自定义注解接收json参数
- 叫号系统服务器,排队叫号系统设置方法
- HITWH-PYTHON学习笔记(2)-20170706
- 【面试题】单链表的操作1
- jet-cp4005,linux双面打印,HP LaserJet Pro M706n 双面打印 技术规格 | HP®People's Republic of China...
- 一个c语言源文件可以包含两个以上main,二级C语言习题汇总及标准答案.doc
- 好用android平板,好用却不平凡,Remix OS让安卓平板活过来!
- 酷狗音乐车载Android版,酷狗音乐车载版
- html+css取消下划线