gpt4 book ai didi

java - Spring jdbctemplate 异常 java.time.LocalDateTime 无法转换为 java.util.Date

转载 作者:行者123 更新时间:2023-12-02 16:08:14 27 4
gpt4 key购买 nike

我在 mysql 数据库中有一个日期时间类型列,使用 jdbctemplate 获取文件列并将其类型转换为 java.util.Date 会引发错误。这是我的代码:

我定义了以下 SimpleDateFormat

private static final SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

然后像这样使用它

String query = "select start_time as starttime from job_tbl";

List<Map<String, Object>> myList = jdbcTemplate.queryForList(query);

for (Map<String, Object> map: myList) {
String dateTime = dateformat.format((java.util.Date) map.get("starttime");
}

代码抛出这个错误:

java.lang.ClassCastException:
java.time.LocalDateTime cannot be cast to java.util.Date

相同的功能在我使用 jdbcTemplate 的其他旧项目中运行良好,可以轻松地类型转换为 java.util.Date 但在这个新项目中,它返回格式的日期java.time.LocalDateTime,mysql-connector 有问题还是其他问题??

最佳答案

java.time

java.util 日期时间 API 及其格式化 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern Date-Time API *.

从错误中可以看出,您需要将 map.get("starttime") 转换为 java.time.LocalDateTime 而不是 java。 util.Date.

DateTimeFormatter dft = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss", Locale.ENGLISH);
String dateTime = dft.format((java.time.LocalDateTime) map.get("starttime"));

了解有关 modern Date-Time API 的更多信息* 来自 Trail: Date Time .


* 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport它将大部分 java.time 功能反向移植到 Java 6 和 7。如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project .

关于java - Spring jdbctemplate 异常 java.time.LocalDateTime 无法转换为 java.util.Date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68769392/

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