简体   繁体   中英

Convert specific format from string to LocalDateTime

I have this method:

   private static LocalDateTime setActivationDate(final String date) {
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yyy");
        LocalDate ld = LocalDate.parse(date, dateFormatter);
        return LocalDateTime.of(ld, LocalDateTime.MIN.toLocalTime());
    }

When i pass value dd.MM.yyyy for example: 14.01.2022 i get this:

2022-01-14T00:00

But I want to return and seconds also..so that format looks like this:

2022-01-14T00:00:00

Any suggestion?

LocalDateTime omits the seconds when they are 00 . If you want to get them use the ISO_LOCAL_DATE_TIME formatter:

String date = "14.01.2022";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yyy");
LocalDate ld = LocalDate.parse(date, dateFormatter);

LocalDateTime ldt = LocalDateTime.of(ld, LocalTime.MIDNIGHT);

System.out.println(ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));

Prints

2022-01-14T00:00:00

If you take a look at the docs , toString explains the behaviour:

Outputs this date-time as a String, such as 2007-12-03T10:15:30. The output will be one of the following ISO-8601 formats:

uuuu-MM-dd'T'HH:mm

uuuu-MM-dd'T'HH:mm:ss

uuuu-MM-dd'T'HH:mm:ss.SSS

uuuu-MM-dd'T'HH:mm:ss.SSSSSS

uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS

The format used will be the shortest that outputs the full value of the time where the omitted parts are implied to be zero .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM