gpt4 book ai didi

java - 与 Java 8 ZonedDateTime API 不兼容的旧日期格式

转载 作者:行者123 更新时间:2023-11-30 07:54:21 25 4
gpt4 key购买 nike

我正在将我的旧日期格式化代码更新为 Java 8 并尝试使用 ZonedDateTime API

日期的格式与 Javascript Date 对象格式相同,例如-

Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)

我之前使用的是以下格式 -

EEE MMM dd yyyy hh:mm:ss 'GMT'Z '('zzzz')'

此格式无法使用 DateTimeFormatter.ofPattern 方法解析日期字符串。

代码如下:

public static final String DATE_FORMAT = "EEE MMM dd yyyy hh:mm:ss 'GMT'Z '('zzzz')'";

public static void main(String[] args) throws ParseException {
String sDate = "Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)";
parseDate(sDate);
}

private static void parseDate(String sDate) throws ParseException {

// works
DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
Date oldDate = dateFormat.parse(sDate);

//FIXME: can't parse?!
ZonedDateTime newDate = ZonedDateTime.parse(
sDate, DateTimeFormatter.ofPattern(DATE_FORMAT)); // <- this is the line 25!
}

这是我的完整引用代码,可以编译运行- https://gist.github.com/bhabanism/470e03db54981ad6ddedbba316dcaa9a

这在第 25 行失败了:

Exception in thread "main" java.time.format.DateTimeParseException: Text 'Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {HourOfAmPm=10, MilliOfSecond=0, MinuteOfHour=0, OffsetSeconds=43200, MicroOfSecond=0, NanoOfSecond=0, SecondOfMinute=0},ISO,Pacific/Auckland resolved to 2017-05-25 of type java.time.format.Parsed

注意,我不能改变日期的输入格式,它必须是

Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)

我肯定可以修改格式化程序

EEE MMM dd yyyy hh:mm:ss 'GMT'Z '('zzzz')'

最佳答案

您的格式字符串中似乎一直存在错误。小写的 hh 表示 AM 或 PM 内的小时,范围为 1 到 12。由于您的字符串中没有 AM/PM,我怀疑这绝不是您想要的,我想知道如何错误没有被注意到。

大写 HH 表示一天中的小时,从 0 到 23:

public static final String DATE_FORMAT = "EEE MMM dd yyyy HH:mm:ss 'GMT'Z '('zzzz')'";

有了这个改变,旧的和新的解析方式都可以在我的电脑上工作。

Locale.ENGLISH 添加到两个格式化程序时,即。您可能想做同样的事情。

我得到的结果是

Thu May 25 00:00:00 CEST 2017
2017-05-25T10:00+12:00[Pacific/Auckland]

由于 CEST 比 UTC 早 2 小时,所以这是同一时间点,只是呈现方式不同。

关于java - 与 Java 8 ZonedDateTime API 不兼容的旧日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087339/

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