Chapter 12. New Date and Time API
This chapter covers
- Why we needed a new date and time library, introduced 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 that 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 millisecond precision. Even worse, the usability of this class is harmed by some nebulous design decisions such as the choice of its offsets: the years start from 1900, whereas the months start at index 0. If you wanted to represent the release date of Java 9, which is 21 September 2017, you’d have to create an instance of Date as follows:
Date date = new Date(117, 8, 21);
Printing this date produces, for the authors:
Thu Sep 21 00:00:00 CET 2017