gpt4 book ai didi

java - Date.toString() - sql 与 util 日期

转载 作者:行者123 更新时间:2023-11-29 08:10:48 33 4
gpt4 key购买 nike

我需要从 Date 对象中删除时间。这是我的尝试,

代码:

System.out.println("date " + dbDate);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("formatter.format(dbDate) " + formatter.format(dbDate));
System.out.println("final " + formatter.parse(formatter.format(dbDate)));

输出:

date 2011-12-03 23:59:59.0
formatter.format(dbDate) 2011-12-03
final Sat Dec 03 00:00:00 IST 2011

我想在 2011-12-03 中显示最终日期。但是在 DatetoString() 转换后,格式不同。我错过了一些东西。请帮忙。

更新:

在我的应用程序中,我有两种不同的方法来获取 dbDateEXPIRY_DATE 列是 DATE 的类型。

第一个查询使用 dbDate = (java.util.Date) rs.getDate("EXPIRY_DATE");

对于这个 dbDateSystem.out.println("date "+ dbDate); 给出 date 2011-12-03

第二个查询使用 dbDate = rs.getTimestamp("EXPIRY_DATE");

对于这个 dbDateSystem.out.println("date "+ dbDate); 给出 date 2011-12-03 23:59:59.0.

这是我的问题。因为我认为 toString() 有问题,所以我没有提到完整的问题。

解决方案:

我没有选择来避免 java.sql.Date,因为我的应用程序方法有多种用途。我尝试了以下并成功了,

dbDate = new java.sql.Date(dbDate.getTime());

最佳答案

I need to remove time from a Date Object

你不能。 java.util.Date 对象包含日期和时间。它的 toString() 也在 a fixed format 中。如果您想在没有时间的情况下向人类展示它,那么您需要像您已经做的那样将它转换为 String。或者,如果您打算在没有时间的情况下将其存储在数据库中(如变量名 dbDate 中的 db 部分所建议的那样),则需要将其转换为 java.sql.Date

preparedStatement.setDate(1, new java.sql.Date(dbDate.getTime()));
// ...

更新 根据您的更新,ResultSet#getDate() 返回 java.sql.Date 的实例,而不是 java.util.Date(但它是 java.util.Date 的子类,这就是不必要的转换起作用的原因;请注意转换与转换不同,真正的转换将是 new java.util.Date(dbDate.getTime()))。正如您在 java.sql.DatetoString() 方法的 the javadoc 中所读到的,它确实是 yyyy-MM-dd 格式。

因此,您的具体问题是您混淆了 java.sql.Datejava.util.Date 并且您误解了 的内部工作原理code>java.util.Date 并被 toString() 方法误导。一切都按预期进行。

相关:

关于java - Date.toString() - sql 与 util 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8242809/

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