Creating a date in Java had been redefined with the advent of Java 8. Besides, the new Date & Time API from the java.time package can be used with ease relative to the old one from the java.util package. In this tutorial, we'll see how it makes a huge difference.
The LocalDate class from the java.time package helps us achieve this. LocalDate is an immutable, thread-safe class. Moreover, a LocalDate can hold only date values and cannot have a time component.
Let's now see all the variants of creating one with values.
2. Create a Custom LocalDate with of()
Let's look at a few ways of creating a LocalDate representing January 8, 2020. We can create one by passing values to the factory method of:
LocalDate date = LocalDate.of(2020, 1, 8);
The month can also be specified using the Month enum:
LocalDate date = LocalDate.of(2020, Month.JANUARY, 8)
We can also try to get it using the epoch day:
LocalDate date = LocalDate.ofEpochDay(18269);
And finally, let's create one with the year and day-of-year values:
LocalDate date = LocalDate.ofYearDay(2020, 8);
3. Create a LocalDate by Parsing a String
The last option is to create a date by parsing a string. We can use the parse method with only a single argument to parse a date in the yyyy-mm-dd format:
LocalDate date = LocalDate.parse("2020-01-08");
We can also specify a different pattern to get one using the DateTimeFormatter class as the second parameter of the parse method:
LocalDate date = LocalDate.parse("8-Jan-2020", DateTimeFormatter.ofPattern("d-MMM-yyyy"));
In this article, we've seen all the variants of creating a LocalDate with values in Java. The Date & Time API articles can help us understand more.
The examples are available over on GitHub.