[Solved] how to convert LocalDate to a specific date time format [closed]


I am assuming that have got a string, for example 2016-01-25, and that you want a string containing the start of the day in the JVM’s default time zone (it wasn’t clear from the question). I first define a formatter for the format that you want (it’s ISO 8601):

private static DateTimeFormatter formatter
        = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSxx");

Now your conversion goes:

    String isoLocalDateString = "2016-01-25";
    LocalDate date = LocalDate.parse(isoLocalDateString);
    ZonedDateTime dateTime = date.atStartOfDay(ZoneId.systemDefault());
    String dateTimeString = dateTime.format(formatter);
    System.out.println(dateTimeString);

When running in my time zone, Europe/Copenhagen, output from this example code is what you asked for:

2016-01-25T00:00:00.000+0100

In rare cases where summer time (DST) begins at the first moment of the day, the time of day will not be 00:00:00.000.

For parsing with ISO_LOCAL_DATE we don’t need to specify the formatter since this formatter is the default for LocalDate.parse().

All of this said, you should not normally want to convert a date from one string format to another string format. Inside your program keep dates as LocalDate objects. When you get string input, parse into a LocalDate. Only when you need to give string output, for example in data exchange with another system, format into a string in the required format.

Link: Wikipedia article: ISO 8601

1

solved how to convert LocalDate to a specific date time format [closed]