LocalDateTimeUtil

Introduction

Starting from Hutool 5.4.x, Hutool includes a wrapper API for the JDK8+ date API. This utility class provides functions for parsing, formatting, and converting LocalDateTime and LocalDate objects.

Usage

  1. Date conversion
String dateStr = "2020-01-23T12:23:56";
DateTime dt = DateUtil.parse(dateStr);

// Convert Date object to LocalDateTime
LocalDateTime of = LocalDateTimeUtil.of(dt);

// Convert timestamp to LocalDateTime
of = LocalDateTimeUtil.ofUTC(dt.getTime());
  1. Date string parsing
// Parse ISO time
LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23T12:23:56");

// Parse custom format time
localDateTime = LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN);

Parsing also supports LocalDate:

LocalDate localDate = LocalDateTimeUtil.parseDate("2020-01-23");

// Parse date time to LocalDate and discard time part
localDate = LocalDateTimeUtil.parseDate("2020-01-23T12:23:56", DateTimeFormatter.ISO_DATE_TIME);
  1. Date formatting
LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23T12:23:56");

// "2020-01-23 12:23:56"
String format = LocalDateTimeUtil.format(localDateTime, DatePattern.NORM_DATETIME_PATTERN);
  1. Date offsetting
final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23T12:23:56");

// Add one day
// "2020-01-24T12:23:56"
LocalDateTime offset = LocalDateTimeUtil.offset(localDateTime, 1, ChronoUnit.DAYS);

If reducing the time, pass a negative number as the second parameter to offset:

// "2020-01-22T12:23:56"
offset = LocalDateTimeUtil.offset(localDateTime, -1, ChronoUnit.DAYS);
  1. Calculate the time interval
LocalDateTime start = LocalDateTimeUtil.parse("2019-02-02T00:00:00");
LocalDateTime end = LocalDateTimeUtil.parse("2020-02-02T00:00:00");

Duration between = LocalDateTimeUtil.between(start, end);

// 365
between.toDays();
  1. The beginning and end of a day
LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23T12:23:56");

// "2020-01-23T00:00"
LocalDateTime beginOfDay = LocalDateTimeUtil.beginOfDay(localDateTime);

// "2020-01-23T23:59:59.999999999"
LocalDateTime endOfDay = LocalDateTimeUtil.endOfDay(localDateTime);