一篇文章概括 Java Date Time 的使用

 本文目的:掌握 Java 中日期和时间常用 API 的使用。

参考:Jakob Jenkov的英文教程Java Date Time Tutorial 和 JavaDoc

概览

Java 8 新增 API

Java 8 部分新类 描述
Instant 表示时间线上的某一瞬间,用秒和纳秒表示。
Duration 表示时间差,用秒和纳秒表示。
LocalDate 表示没有时区信息的日期,例如生日、法定假日等。
LocalTime 表示没有时区信息的一天中的本地时间。
LocalDateTime 表示没有时区信息的日期和时间
ZonedDateTime 表示日期和时间,包括时区信息
DateTimeFormatter 将日期时间对象格式化为字符串。

众所周知,在 Java 8 中添加了一个全新的日期时间 API 位于 java.time 包中,主要变化是,自1970年1月1日以来,日期和时间现在不再由单个毫秒数表示,而是由1970年1月1日以来的秒数和纳秒数表示。
秒数既可以是正的,也可以是负的,用 long 表示。纳秒数始终为正,由 int 表示。

Java 7 具有以下日期和时间类和方法:

Java 7 日期时间常用类/方法 描述
System.currentTimeMillis() 自1970年1月1日起以毫秒为单位返回当前日期和时间的静态方法
java.util.Date 表示日期和时间的类。这个类中的大多数方法都是不推荐的。
java.sql.Date 表示日期的类。这个date类与JDBC一起使用。
java.sql.Timestamp 表示日期和时间的类。这个date和time类与JDBC一起使用。
java.util.Calendar 日历类的基类。 有方法做日期和时间算术,比如将日期或月份添加到另一个日期。
java.util.GregorianCalendar 一个 Calendar 类的子类。代表公历,在今天的西方世界大部分地区使用。拥有 Calendar 中的所有做日期和时间算术的方法。
java.util.TimeZone 一个表示时区的类,在跨时区执行日历计算时非常有用。

应该使用所有这些类中的哪一个取决于想要做什么,如果你需要做简单的计时, System.currentTimeMillis() 方法就可以了。

  • 如果只需要一个对象来保存日期,例如作为简单域模型对象中的属性,则可以使用 java.util.Date 类。
  • 如果需要读取和写入数据库的日期和时间,则使用 java.sql.Date 和 java.sql.Timestamp 类。
  • 如果您需要进行日期计算,例如将日期或月份添加到另一个日期,或者查看工作日(星期一,星期二等)这些给定日期,或者转换时区之间的日期和时间,请使用 java.util.Calendar 和 java .util.GregorianCalendar 类。

System.currentTimeMillis()

currenttimemillis() 静态方法以毫秒为单位返回自1970年1月1日以来的时间。返回的值是long。这里有一个例子:

Copy
long timeNow = System.currentTimeMillis();

这个返回值可以用来初始化 java.util.Date, java.sql.Date, java.sql.Timestamp 和 java.util.GregorianCalendar 对象,它还可以用于在程序中测量时间。

currenttimemillis() 方法的粒度大于 1 毫秒,这取决于操作系统,还可能更大,许多操作系统以几十毫秒为单位测量时间。如果需要更精确的计时,请使用 System.nanoTime() ,但是这个方法返回的时间是从任意一个时刻计算的,甚至有可能是负数,所以不能用于初始化日期时间对象,只适合用于计算两个时间点的时间差。

java.util.Date

用来表示日期,包含年月日时分秒 ,目前该类中的大多数方法都不赞成使用了,一般用 Calendar 类来代替它,但还是有必要简单了解一下。
下面是一些使用例子:

Copy
Date dateNow = new Date(); // 使用当前日期和时间创建

Date 类的默认构造器,源码是这样的:

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信