[JDK8教程]Java Date Time Tutorials

介绍

过去我们经常使用Date和 Calendar的APIs来表示和操作时间

  • java.util.Date – 表示日期和时间, 使用默认时区.
  • java.util.Calendar – 表示日期和时间, 更多操纵日期的方法.
  • java.text.SimpleDateFormat – 格式化(日期 - >文本),解析日期和日历(文本 - >日期)

在jdk8,我们开始使用新的APIs,(JSR310 受 Joda-time启发,并且创建新的java.time包)

  • java.time.LocalDate – 日期(不包括时间), 不包括时区.
  • java.time.LocalTime – 时间(不包括日期), 不包括时区.
  • java.time.LocalDateTime – 日期和时间, 不包括时区.
  • java.time.ZonedDateTime – 日期和时间, 包括.
  • java.time.DateTimeFormatter – 格式化(日期 - >文本),解析日期和日历(文本 - >日期)
  • java.time.Instant – 机器的日期和时间
    , 从Unix纪元时间(1970年1月1日午夜)开始的秒数
  • java.time.Duration – 以秒和纳秒为单位测量时间.
  • java.time.Period – 测量年,月和日的时间.
  • java.time.TemporalAdjuster –调整日期

例子

如何将String转换为LocalDate

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");
String date = "10/08/2018";
//convert String to LocalDate
LocalDate localDate = LocalDate.parse(date, formatter);

Convert Instant to LocalDateTime

public static void main(String[] argv) {

        // Parse a ISO 8601 Date directly
        //Instant instant = Instant.parse("2018-10-18T06:17:10.225Z");

        Instant instant = Instant.now();

        System.out.println("Instant : " + instant);

        //Convert instant to LocalDateTime, no timezone, add a zero offset / UTC+0
        LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);

        System.out.println("LocalDateTime : " + ldt);

    }

LocalDateTime To Long

localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()

ZoneId处理时区

计算间隔

Period : 用于计算两个日期(年月日)间隔。
Duration : 用于计算两个时间(秒,纳秒)间隔。

参考文档

https://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html

你可能感兴趣的:([JDK8教程]Java Date Time Tutorials)