gpt4 book ai didi

java - 将字符串转换为 ZonedDateTime

转载 作者:行者123 更新时间:2023-12-01 17:41:05 29 4
gpt4 key购买 nike

我需要将字符串 2020-04-15T23:00:00+0000 转换为 ZonedDateTime。我尝试了以下方法,但没有成功:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss Z");
System.out.println(ZonedDateTime.parse("2020-04-15T23:00:00+0000", formatter));

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss 00:00");
System.out.println(ZonedDateTime.parse("2020-04-15T23:00:00+0000", formatter));

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss 0000");
System.out.println(ZonedDateTime.parse("2020-04-15T23:00:00+0000", formatter));

我也使用了ISO_LOCAL_DATE_TIME,但这不起作用。有什么想法吗?

更新:

我尝试了以下:

    OffsetDateTime dateTime1 = OffsetDateTime.parse("2020-04-15T23:00:00+0000",
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
System.out.println(dateTime1.toZonedDateTime());

我得到的输出为 2020-04-15T23:00Z,但我需要它为 2020-04-15T23:00:00Z,并在最后修剪秒数。

最佳答案

    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.appendPattern("XX")
.toFormatter();
String str = "2020-04-15T23:00:00+0000";
OffsetDateTime dateTime = OffsetDateTime.parse(str, formatter);
System.out.println(dateTime);

输出:

2020-04-15T23:00Z

由于您的输入字符串包含偏移量 +0000,并且没有时区,因此更愿意将日期和时间表示为 OffsetDateTime,而不是 ZonedDateTime (如果您有需要 ZonedDateTime 的具体原因,只需在上面的代码中使用该类即可,它也可以工作)。

我更喜欢使用内置格式化程序而不是编写自己的格式模式字符串。仅对于偏移量,我使用格式模式 XX (还有其他模式也可以使用)。

I get output as 2020-04-15T23:00Z but I need it as 2020-04-15T23:00:00Z with the seconds at the end which this is trimming.

你很可能不知道。格式为 ISO 8601,在 ISO 8601 中,秒为 0 时是可选的。 OffsetDateTimeZonedDateTime 具有完全精度(甚至纳秒)。省略(您所说的修剪)仅发生在对象的 toString 方法生成的输出中。如果您需要其他 API 或其他系统的 ISO 8601 格式,则不带秒的变体也应该可以工作。

如果您确实需要特定格式,请使用第二个 DateTimeFormatter 将其格式化为所需格式的字符串。

您的代码出了什么问题?

Mark Rotteveel 已经说过了:ISO 8601 允许时间和 UTC 偏移量之间没有空格。或者换句话说,当在格式模式字符串中在 ssZ 之间放置空格时,解析将需要在解析的字符串中包含空格。由于没有空格,解析失败。

链接

关于java - 将字符串转换为 ZonedDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61269697/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com