Sunny DHIMAN
Sunny DHIMAN

Reputation: 21

convert string ("2022-12-23T07:20:00" ) time into ZonedDateTime

i was trying to convet string time into ZonedDateTime but not comes up with solution . This is the string format of time "2022-12-23T07:20:00"

i have tried this approach

String stringDate = "2022-12-23T07:20:00";

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
ZonedDateTime ztdOfDateOfPurchase = ZonedDateTime.parse(stringDate , dateTimeFormatter);

 this error is coming=> java.time.format.DateTimeParseException: Text '2022-12-23T07:20:00' could not be parsed at index 19

Upvotes: 2

Views: 298

Answers (1)

Arvind Kumar Avinash
Arvind Kumar Avinash

Reputation: 78945

Simply parse your date-time string using LocalDateTime#parse and add the applicable ZoneId to get the ZonedDateTime.

Note that java.time API is based on ISO 8601 and therefore you do not need a DateTimeFormatter to parse a date-time string which is already in ISO 8601 format (e.g. your date-time string, 2022-12-23T07:20:00).

Demo:

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

class Main {
    public static void main(String[] args) {
        LocalDateTime ldt = LocalDateTime.parse("2022-12-23T07:20:00");

        // Replace ZoneId.systemDefault() with the applicable zone ID e.g.
        // ZoneId.of("America/New_York")
        ZonedDateTime zdt = ZonedDateTime.of(ldt, ZoneId.systemDefault());
        System.out.println(zdt);

        // Alternatively,
        zdt = ldt.atZone(ZoneId.systemDefault());
        System.out.println(zdt);
    }
}

Output in my timezone:

2022-12-23T07:20Z[Europe/London]
2022-12-23T07:20Z[Europe/London]

Learn more about the modern Date-Time API from Trail: Date Time.

Upvotes: 2

Related Questions