我有下面的程序,看起来ZoneDateTime无法解析日期字符串.我应该使用不同的日期格式或不同的库来解析吗?

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

class Scratch {
    public static void main(String[] args) {
        final String inputDate = "2022-03-12T03:59:59+0000Z";
        ZonedDateTime.parse(inputDate, DateTimeFormatter.ISO_DATE_TIME).toEpochSecond();
    }
}

Exception in thread "main" java.time.format.DateTimeParseException: Text '2022-03-12T03:59:59+0000Z' could not be parsed, unparsed text found at index 19
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2053)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1952)
    at java.base/java.time.ZonedDateTime.parse(ZonedDateTime.java:599)
    at Scratch.main(scratch_29.java:7)

Process finished with exit code 1

推荐答案

这不是ISO_DATE_TIME格式.这需要大约2022-03-12T03:59:59+0000(不需要"Z").工作正常的格式化程序如下所示:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;


class Scratch {
    public static void main(String[] args) {
        final String inputDate = "2022-03-12T03:59:59+0000Z";

        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .parseCaseInsensitive()
                .append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
                .optionalStart()
                .appendPattern(".SSS")
                .optionalEnd()
                .optionalStart()
                .appendZoneOrOffsetId()
                .optionalEnd()
                .optionalStart()
                .appendOffset("+HHMM", "0000")
                .optionalEnd()
                .optionalStart()
                .appendLiteral('Z')
                .optionalEnd()
                .toFormatter();

        long epochSecond = ZonedDateTime.parse(inputDate, formatter).toEpochSecond();

        System.out.println("epochSecond is " + epochSecond);
    }
}

this post衍生而来.您可以在一个地方创建格式化程序,然后再次使用它.

Java相关问答推荐

Spring Jpa findById会导致StackOverFlow错误,但其他查询没有问题

一般类型和kotlin阴影Java函数的问题

使用log 4j2格式的Hibernate 显示SQL日志(log)

转换为Biggram

CAMEL 4中的SAXParseException

如何打印本系列的第n项y=-(1)-(1+2)+(1+2+3)+(1+2+3+4)-(1+2+3+4+5)...Java中的(1+2+3+4...+n)

确定Java中Math.Ranb()输出的上限

我无法获取我的Java Spring应用程序的Logback跟踪日志(log)输出

暂停计时器

什么是Java原子属性的正确getter和setter

Com.google.firebase.database.DatabaseException:无法将类型为java.lang.Boolean的值转换为字符串.这是关于什么的?

使用OAuth 2.0资源服务器JWT时的授权(授权)问题

Java Mooc.fi Part 12_01.Hideout -返回和删除方法

如果按钮符合某些期望,如何修改它的文本?

我怎样才能让IntelliJ标记toString()的任何实现?

Java页面筛选器问题

Spring Boot中的应用程序.properties文件中未使用的属性

从Spring6中的JPMS模块读取类时出现问题

IntelliJ IDEA依赖项工具窗口丢失

如何在右击时 Select 新行?