【发布时间】:2023-03-09 19:04:01
【问题描述】:
我正在尝试以以下格式解析来自 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"))
);
线程“AWT-EventQueue-0”java.time.format.DateTimeParseException 中的异常:无法解析文本“06-08-2017 04:15”:无法从 TemporalAccessor 获取 ZonedDateTime:{MinuteOfHour=15, DayOfMonth =8, WeekBasedYear[WeekFields[SUNDAY,1]]=2017, MonthOfYear=6, HourOfAmPm=4},ISO,Etc/GMT of type java.time.format.Parsed
有没有更好/更短的方法来完成这项工作?
【问题讨论】:
-
将其读取为
java.sql.Date,并将其转换为ZonedDateTime。 -
并非您从数据库中读取的所有内容都必须以字符串形式出现。 Sql 有原生的日期时间类型,你绝对应该使用它们。
-
Elliott,java.sql.Date 中没有时间组件
-
在使用像
java.sql.Date和朋友这样过时的类之前,请检查您是否拥有或可以获得可以为您提供现代类实例的JDBC 驱动程序,例如ZonedDateTime或Instant(需要 JDBC 4.2 合规性,所以我读过)。
标签: java mysql datetime-parsing zoneddatetime