Chapter 12. New Date and Time API

 

This chapter covers

  • Why we needed a new date and time library in Java 8
  • Representing date and time for both humans and machines
  • Defining an amount of time
  • Manipulating, formatting, and parsing dates
  • Dealing with different time zones and calendars

The Java API includes many useful components to help you build complex applications. Unfortunately, the Java API isn’t always perfect. We believe the majority of experienced Java developers will agree that date and time support before Java 8 was far from ideal. Don’t worry, though; Java 8 introduces a brand new Date and Time API to tackle this issue.

In Java 1.0 the only support for date and time was the java.util.Date class. Despite its name, this class doesn’t represent a date but a point in time with milliseconds precision. Even worse, the usability of this class is harmed by some nebulous design decisions like the choice of its offsets: the years start from 1900, whereas the months start at index 0. This means that if you want to represent the release date of Java 8, which is March 18, 2014, you have to create an instance of Date as follows:

Date date = new Date(114, 2, 18);

Printing this date produces

Tue Mar 18 00:00:00 CET 2014

12.1. LocalDate, LocalTime, Instant, Duration, and Period

12.2. Manipulating, parsing, and formatting dates

12.3. Working with different time zones and calendars

12.4. Summary