gpt4 book ai didi

Java日期和时间从给定日期 "2019-12-03T10:00:00-06:00 "中删除时区,预期日期为 "2019-12-03T10:00:00"

转载 作者:行者123 更新时间:2023-12-01 16:42:56 25 4
gpt4 key购买 nike

LocalDateTime formatOrderEndDateTime;
try {
DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
formatOrderEndDateTime = LocalDateTime.parse("2019-12-03T10:00:01+01:00", formatter);
System.out.println(formatOrderEndDateTime);
} catch (Exception e) {
throw new IllegalArgumentException();
}

上面的代码可以按预期工作,但如果时区不可用,则无法工作。

给定输入日期:2019-12-03T10:00:00-06:00 或 2019-12-03T10:00:00

预计上线日期:2019-12-03T10:00:00

我的代码应该适用于带时区和不带时区输入日期

最佳答案

时刻

given input date : 2019-12-03T10:00:00-06:00 or 2019-12-03T10:00:00

这是两种截然不同的动物。

第一个代表一个时刻,即时间线上的特定点。第二个没有。第二个是东京上午 10 点,图卢兹上午 10 点,还是托莱多上午 10 点——三个截然不同的时刻,相隔几个小时。

第一个应该被解析为 OffsetDateTime。第二个应该被解析为 LocalDateTime

类型错误

对于诸如 2019-12-03T10:00:00-06:00 这样的输入,解析为 OffsetDateTime。您使用的 LocalDateTime 无法处理该字符串末尾与 UTC 的偏移量。

无需指定格式模式。您的输入符合默认使用的 ISO 8601 标准。

OffsetDateTime odt = OffsetDateTime.parse( "2019-12-03T10:00:00-06:00" )

格式错误

要生成省略偏移量的 ISO 8601 格式的文本,请使用 DateTimeFormatter.ISO_LOCAL_DATE_TIME .

String output = odt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) ;

偏移量与时区

not working if time zone

您的输入没有时区。它们与 UTC 有一个偏移量。偏移量只是小时、分钟、秒的数量。

时区的意义远不止这些。时区是特定地区的人们使用的偏移量的过去、现在和 future 变化的历史。时区的名称采用 Continent/Region 形式,例如 Europe/Paris

关于Java日期和时间从给定日期 "2019-12-03T10:00:00-06:00 "中删除时区,预期日期为 "2019-12-03T10:00:00",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59837474/

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