目录

  • Java 8 Date Time API

  • Java 7 Date Time API

当你首次实验弄明了怎么去使用Java的date time 的API的时刻,那是相当令人疑心的。Therefore I have put together this little trail on Java’s date and time classes。希望这会让你对Java’的date类和time类有个总体的熟悉。我也希望这能消除一些Sun所制造的关于Java中许多date和time类的疑心。
实际上,在Java8中,随着一整套新的类的引入,旧有的date time API已经发生了改变(消灭)。这个教程将会一起注释Java8和Java7的date time API.

Java 8 Date Time API

在Java8中,加入了一个全新的date time API。这个API在Java8尺度类库中的java.time包。
Java8中date time API最主要的改变是日期和时间不再示意为从1970年1月1日到现在为止的总毫秒数,而是总秒数和总纳秒数。总秒数可以是正的也可以是负的以及它由long类型来示意。总纳秒数永远是正的以及它由int类型来示意。你将会在新的Java date time API 的许多类中看到这种新的日期和时间表现形式。
Java.time 包中也包含了一套子类,这些子类包含了更多的实用工具等。举个例子,java.time.chrono包中包含了一些处置日本、泰国、台湾和伊斯兰日历的工具类。Java.time.format包中包含了用于转换strings到dates和花样化 dates 到 strings。

Java8 中date time API焦点由以下这些类组成:

Instant 示意时间线上的一个瞬间。在Java7的date time API中,一个瞬间通常由从1970年1月1日到现在的总毫秒数来示意。在Java8中Instant类代表着时间线上的一个瞬间,这个瞬间由从1970年1月1日到现在的总秒数和总纳秒数来示意。
Duration 示意连续的时间,好比在两个瞬间之间的时间。和Instant类一样,Duration将这个时间示意为总秒数和总纳秒数。
LocalDate 示意不带时区信息的日期-好比生日日期、官方节日等。
LocalDateTime 示意不带时区信息的日期时间
LocalTime 示意不带时区信息的当地时间。
TemporalAdjuster
ZonedDateTime 示意携带时区信息的日期时间
Period
DateTimeFormatter 将date time工具花样化为字符串。好比zonedDateTime或者LocalDateTime。

Java7有以下日期时间的类和方式。后面我会在每一个类的各自的页面先容他们。Java 7 Date Time API

System.currentTimeMillis() 将从1970年1月1日到当前时间的总毫秒数返回的静态方式。
java.util.Date 示意日期和时间的类,其中大部分方式已被弃用。
java.sql.Date 示意日期的类。去除了所有时间信息。该类由JDBC所使用。
java.sql.Timestamp 示意日期和时间的类。该类由JDBC所使用。
java.util.Calendar 一些Calendar类的基类,拥有着盘算日期和时间的方式,好比在另一个日期上添加一天或者一个月。
java.util.GregorianCalendar java.util.Calendar的一个详细子类,示意在当今西方普遍使用的公历。拥有着来自于 java.util.Calendar所有盘算日期和时间的方式。
java.util.TimeZone Java TimeZone类示意时区,在跨时区的日历盘算很有用。
java.text.SimpleDateFormat 该类可以辅助你转换strings到dates和花样化 dates 到 strings。


那么,哪些类是你应该使用的呢?这个取决于你将要做什么。
若是你只是做一些简朴的时间设置,那么System.currentTimeMillis()就足矣。
若是你只是需要一个能够装载日期的工具,好比作为一个简朴的域模子工具的属性,那么你可以使用java.util.Date 类。
若是你只是需要读取和写入日期时间到数据库,那么使用java.sql.Date 类和java.sql.Timestamp类。
若是你只是需要做一些日期盘算,好比在另一个日期添加一些天数或者月数、检查给定的日期是一周中的第几天(周一、周二等)、在时区之间转换日期和时间,那么使用java.util.Calendar类和java.util.GregorianCalendar 类。