无法从HH:mm:ss.SSS'Z'转换为HH:MM格式的Java

问题描述 投票:2回答:1

我正在尝试将Java转换为HH:MM格式

这是我的代码

String date = "18:30:00.000Z";

    try {
        ZonedDateTime parsed = ZonedDateTime.parse(date);

        ZonedDateTime z = parsed.withZoneSameInstant(ZoneId.systemDefault());

        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH);
        System.out.println(fmt.format(z));
    } catch(Exception e) {
        e.printStackTrace();
    }

我的代码有什么问题吗

这里是例外

java.time.format.DateTimeParseException: Text '18:30:00.000Z' could not be parsed at index 0
java datetime jodatime java-time datetime-parsing
1个回答
4
投票

您要解析的字符串不是日期和时间,而只是时间。因此,类型ZonedDateTime不适合在此处使用。改为使用OffsetTime,这是仅保留时间(无日期)的类。

String input = "18:30:00.000Z";
OffsetTime time = OffsetTime.parse(input);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm a");
String result = formatter.format(time);
System.out.println(result);

输出:

6:30 PM
© www.soinside.com 2019 - 2024. All rights reserved.