0

我以以下格式保存日期EEE MMM dd HH:mm:ss z yyyy,但它以这种格式保存2013-05-03 00:38:20.0。但是当我在保存到数据库之前在控制台上打印相同的日期时,它符合预期INFO: Fri May 03 00:38:20 IST 2013

请任何人都可以解释为什么它如上所述保存。

下面是代码:

Date now = new Date();
String datetimeStr = now.toString();
SimpleDateFormat format = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss z yyyy");
Date parseDate = format.parse(datetimeStr);

数据库列

date_order_created date
4

3 回答 3

5

希望您实际上并没有首先将日期作为文本保存在数据库中。假设您不是(而且我认为您不是),那么您根本就不是真正“以以下格式保存日期”……您只是在保存日期。

日期的值没有格式 - 1976 年 6 月 19 日是同一日期,无论我以这种方式表示,还是 1976-06-19 或 19/06/1976 或 06/19/1976(假设我知道如何解释任何这些格式)。这就是您在这里看到的 - 您正在保存日期,当您在“数据库中”(例如通过一些 SQL 控制台)查看它时,您看到的是一种表示形式......但是当您从数据库中获取它时并从 Java 打印出来,你会看到调用的结果Date.toString()。这根本不会改变价值

如果您想以Date一种特定方式格式化值,请使用SimpleDateFormat- 但要非常注意Date对象本身没有格式(或时区或日历),而您的数据库可能也没有。(数据库中的确切细节将取决于数据库和列类型。)

区分值和该值的字符串表示非常重要。

例如,如果我写:

int x = 0xff;
int y = 255;
System.out.println(x == y);

然后打印“真” - 因为两者xy具有相同的价值。在一种情况下,我使用十六进制表示这一事实根本不会影响作为数字的值。

于 2013-05-02T19:20:26.850 回答
1

这里
以下代码根据传递给 SimpleDateFormat 构造函数的模式字符串格式化日期和时间。format 方法返回的 String 包含要显示的格式化日期和时间。

Date today;
String output;
SimpleDateFormat formatter;

formatter = new SimpleDateFormat(pattern, currentLocale);
today = new Date();
output = formatter.format(today);
System.out.println(pattern + " " + output);
The following table shows the output generated by the previous code ex
Pattern              Output
EEE, MMM d, ''yy    Tue, Jun 30, '09
于 2013-05-02T19:45:22.653 回答
0

当您将 Date 对象保存在数据库中时,这通常不是保存的 String 表示形式。这取决于数据库中使用的字段类型。

和 :

Fri May 03 00:38:20 IST 2013 

看起来像 date.toString()

于 2013-05-02T19:20:31.777 回答