gpt4 book ai didi

java - 将 mysql 日期解析为 ZonedDateTime

转载 作者:行者123 更新时间:2023-11-29 10:46:40 24 4
gpt4 key购买 nike

我正在尝试按以下格式解析来自 MySql 的数据:

DATE_FORMAT(datetime,'%m-%d-%Y %H:%i')

Java 解析器代码如下所示:

ZonedDateTime datetime = ZonedDateTime
.parse(
row[1].toString(),
DateTimeFormatter
.ofPattern("MM-dd-YYYY hh:mm")
.withZone(ZoneId.of("Etc/GMT"))
);

Exception in thread "AWT-EventQueue-0" java.time.format.DateTimeParseException: Text '06-08-2017 04:15' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {MinuteOfHour=15, DayOfMonth=8, WeekBasedYear[WeekFields[SUNDAY,1]]=2017, MonthOfYear=6, HourOfAmPm=4},ISO,Etc/GMT of type java.time.format.Parsed

是否有更好/更短的方法来完成此任务?

最佳答案

对您问题的本地修复是:

    ZonedDateTime datetime = LocalDateTime.parse(row[1].toString(), 
DateTimeFormatter.ofPattern("MM-dd-uuuu HH:mm"))
.atZone(ZoneOffset.UTC);

请注意,我已将您的格式模式中的 YYYY 更改为 uuuu,将 hh 更改为大写 HHY 用于基于周的年份h 用于时钟小时-of-am-pm(1 -12) 如果没有a(am/pm 标记的符号),这就没有意义。从 documentation 了解有关这些符号的更多信息.

编辑:我在这里吃得太饱了。只需对格式模式进行这两项更改,您自己的 Java 代码就可以很好地工作。我将保留我的代码版本,以防任何人都能从中获得灵感。

也就是说,最好的解决方案是从 JDBC 驱动程序获取一个 Instant 对象,而不是在数据库端格式化并在 Java 端解析的字符串。兼容 JDBC 4.2 的驱动程序应该能够满足您的需求。

关于java - 将 mysql 日期解析为 ZonedDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44439566/

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