Class — 04 — Date类常用方法解析

原文链接: Class — 04 — Date类常用方法解析

这次主要整理下 Java 中 Date 类的常用方法

一、Date 类的定义

  • Date 类位于 java.util 包中,主要用来封装当前的日期和时间
  • Date 类提供两个构造函数来实例化 Date 对象 (其余构造方法已经过时了)

    • Date()

      • 使用当前日期和时间来初始化对象
    • Date(long milliseconds)

      • 接收一个 long 类型的参数,该参数是从 1970-01-01 00:00:00.000 到当前时间的毫秒数
Date date = new Date();
// 打印Date对象
// Sat:表示周六
// Aug:表示八月
// GMT:格林威治标准时间
// GMT+08:00:东八区即标准北京时间
System.out.println(date); // Sat Aug 11 17:03:32 GMT+08:00 2018

二、Date 类的常用方法

  • getTime()

    • 获取时间毫秒数

      Date date = new Date();
      System.out.println(date.getTime()); // 1533978518866
  • setTime(long milliseconds)

    • 设置时间毫秒数

      Date date = new Date();
      date.setTime(100);
      System.out.println(date); // Thu Jan 01 08:00:00 GMT+08:00 1970
  • equals(Object obj)

    • 用于比较两个时间是否相等

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date1 = sdf.parse("2018-08-10 08:08:123");
      Date date2 = sdf.parse("2018-08-10 08:08:123");
      System.out.println(date1.equals(date2)); // true
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date1 = sdf.parse("2018-08-10 08:08:123");
      Date date2 = sdf.parse("2018-08-11 08:08:123");
      System.out.println(date1.equals(date2)); // false
  • after(Date when)

    • 校验目标日期是否在参数日期之后

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date1 = sdf.parse("2018-08-10 08:08:123");
      Date date2 = sdf.parse("2018-08-09 08:08:123");
      System.out.println(date1.after(date2)); // true
  • before(Date when)

    • 校验目标日期是否在参数日期之前

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date1 = sdf.parse("2018-08-10 08:08:123");
      Date date2 = sdf.parse("2018-08-09 08:08:123");
      System.out.println(date1.before(date2)); // false
  • compareTo(Date anotherDate)

    • 对两个Date对象进行比较
    • 如果目标日期等于参数日期,则返回 0

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date1 = sdf.parse("2018-08-10 08:08:123");
      Date date2 = sdf.parse("2018-08-10 08:08:123");
      System.out.println(date1.compareTo(date2)); // 0
    • 如果目标日期在参数日期之后,则返回 1

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date1 = sdf.parse("2018-08-11 08:08:123");
      Date date2 = sdf.parse("2018-08-10 08:08:123");
      System.out.println(date1.compareTo(date2)); // 1
    • 如果目标日期在参数日期之前,则返回 -1

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date1 = sdf.parse("2018-08-09 08:08:123");
      Date date2 = sdf.parse("2018-08-10 08:08:123");
      System.out.println(date1.compareTo(date2)); // -1
  • toInstant()

    • Instant 输出的是标准时间,即格林威治标准时间,而 Date 输出的是北京时间,两者相差 8 个小时
    • 返回一条时间线上与此日期相同的一个点

      Date date = new Date();
      // Instant:java8的新特性,表示时间线中的一个特定时刻
      Instant instant = date.toInstant();
      // 标准时间,精确到纳秒 
      System.out.println(instant); // 2018-08-11T03:11:59.110Z
      // 将标准时间修改为北京时间,即+8小时
      System.out.println(instant.plusMillis(TimeUnit.HOURS.toMillis(8))); // 2018-08-11T11:11:59.110Z
      // 北京时间,精确到毫秒
      System.out.println(date); // Sat Aug 11 11:11:59 GMT+08:00 2018

原文 

https://segmentfault.com/a/1190000022527463

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Class — 04 — Date类常用方法解析

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址