1 使用before和after

Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;
Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;

public class Tet {public static void main(String[] args) throws InterruptedException {Date d1 = new Date();Thread.sleep(300);Date d2 = new Date();System.out.println(d1.before(d2));System.out.println(d1.after(d2));}
}

before和after底层原理其实还是转换成为了毫秒

public class Date{public boolean before(Date when) {return getMillisOf(this) < getMillisOf(when);}public boolean after(Date when) {return getMillisOf(this) > getMillisOf(when);}static final long getMillisOf(Date date) {if (date.cdate == null || date.cdate.isNormalized()) {return date.fastTime;}BaseCalendar.Date d = (BaseCalendar.Date) date.cdate.clone();return gcal.getTime(d);}}

2 使用getTime() 转换成为毫秒

public class Test {public static void main(String[] args) throws InterruptedException {Date d1 = new Date();//转换为毫秒long d1Ms = d1.getTime();Thread.sleep(300);Date d2 = new Date();//转换为毫秒long d2Ms = d2.getTime();System.out.println(d1Ms < d2Ms);}
}

getTime() 底层也是获取了毫秒数.

public class Date{public long getTime() {return getTimeImpl();}private final long getTimeImpl() {if (cdate != null && !cdate.isNormalized()) {normalize();}return fastTime;}
}

3 转换为字符串比较。compareTo()

将日期转换为字符串,然后使用compareTo()函数

compareTo()返回结果说明:
如果参数字符串等于此字符串,则返回值 0;
如果此字符串小于字符串参数,则返回一个小于 0 的值;
如果此字符串大于字符串参数,则返回一个大于 0 的值。

public class Test {public static void main(String[] args) throws InterruptedException {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d1 = new Date();//转换为字符串String d1Str = df.format(d1);Thread.sleep(2000);Date d2 = new Date();//转换为字符串String s2Str = df.format(d2);int ret = d1Str.compareTo(s2Str);System.out.println(ret);}
}

字符串转日期

SimpleDateFormat sdf =   new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );
String ds=new String("2017-06-09 10:22:22");
Date sd=sdf.parse(ds);

技术交流

欢迎关注我的微信公众号:程序员大宝。一个乐于分享的程序员!关注免费领取架构师学习资料和精选大厂高频面试题库。

java时间比较3种方式相关推荐

  1. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

  2. Java获取当前时间的四种方式

    面试时被问到如何获取系统当前时间,平时没有怎么注意这个问题,这里整理一下 import java.text.SimpleDateFormat; import java.util.Calendar; i ...

  3. mysql java 日期格式化_(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  4. Java操作Excel三种方式POI、Hutool、EasyExcel

    Java操作Excel三种方式POI.Hutool.EasyExcel 1. Java操作Excel概述 1.1 Excel需求概述 1.2 Excel操作三种方式对比 2. ApachePOIExc ...

  5. java实现线程三种方式_详解三种java实现多线程的方式

    java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 public class thread1 extends Thread ...

  6. Java 创建对象的 6 种方式,总有一种适合你

    创建对象的 6 种方式 假设有个女朋友类: @Data @NoArgsConstructor @AllArgsConstructor class GirlFriend {private String ...

  7. Java技术分享:升级所安装Java版本的两种方式

    在进行Java开发的时候我们可能会需要升级所安装的Java版本,那么你知道应该如何安装吗?小千今天就来给大家介绍两种方式. 一.卸载掉原本安装的Java,下载最新安装包安装即可. 这个步骤就不介绍了, ...

  8. Oracle 查询当前系统时间的几种方式

    2019独角兽企业重金招聘Python工程师标准>>> Oracle 获取当前系统时间的几种方式: /* Oracle使用计算机操作系统的当前日期和时间. SYSDATE:可将Sys ...

  9. java创建对象的五种方式

    java创建对象的五种方式 一.使用new关键字 二.使用clone方法 三.使用反序列化 四.使用反射 五.使用Unsafe 一.使用new关键字 如 User user=new User(); 执 ...

最新文章

  1. 转载 干货 | 陪伴我学习NLP、知识图谱的那些资源(教程+书籍+网站+工具+论文...可以说很全面了)
  2. pyhton 安装pip 以及 numpy (解决python:ModuleNotFoundError:No module named numpy 等类似缺包问题
  3. 深度学习的核心:掌握训练数据的方法
  4. 思科交换机配置试题_(思科配置试题可以略过)
  5. css怎样将图片设置成正方形,而且随着浏览器窗口大小的改变而自适应缩放
  6. 怎样将python的文件转化为windows的可执行程序
  7. ADO.NET Entity Framework -Code Fisrt 开篇(一)
  8. spark异常 - Null value appeared in non-nullable field
  9. spring基于注解的 IOC 配置ioc实现crud
  10. Redis管理及监控工具treeNMS
  11. c语言sinx的幂级数展开式,sinx的幂级数展开式问题?
  12. 计算机系统英语作文结尾万能句子,简单英语作文万能句子 开头结尾套用句子...
  13. css 全文字体大小,CSS 字体大小
  14. Access-Control-Allow- 跨域CORS 的使用
  15. [每天一个知识点]12-Maven怎么读
  16. QuTrunk与Paddle结合实践--VQA算法示例
  17. 腐烂的橘子(广度优先搜索)(考虑同时搜索)
  18. “创药网”-创新药领域专业资讯网站​
  19. 最详细AMD Ryzen CPU,VMware 15安装macOS 10.15.x Catalina 记录(第一篇)
  20. 医学四视图-007-增加按钮,增加文档提示

热门文章

  1. 一元多项式的表示及加减乘除运算
  2. 一生必看的30个故事
  3. 图解金融标准:《金融行业信息系统信息安全等级保护实施指引》
  4. LAN端口和WAN端口的区别
  5. 玩转Ubuntu(配置FTP工具之SFTP Net Drive Free)
  6. 拼命考上研的普通二本生后来怎么样了?
  7. 时间戳与时间之间的转换
  8. 移动端监听 video 全屏和退出全屏
  9. 5459. 【NOIP2017提高A组冲刺11.7】密室
  10. Leetcode #17 Letter Combinations of a Phone Number Z9键盘字母组合解题小节