保存到数据库时,日期以不同的格式保存

dev*_*per 0 java date

我以下面的格式保存日期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);
Run Code Online (Sandbox Code Playgroud)

Datebase列

date_order_created date
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

希望您实际上并不是首先将日期保存为数据库中的文本.假设你不是(而且我认为你不是),你根本就不是"以下面的格式保存日期"......你只是保存日期.

日期的值不具有的格式- 1976年6月19日是同一天我是否表示这样的说法,或1976年6月19日或19/06/1976或者1976年6月19日(假设我知道如何解释任何这些格式).这就是你在这里看到的 - 你正在保存日期,当你在"数据库"中查看它时(例如通过一些SQL控制台)你会看到一个表示...但是当你从数据库中获取它时并从Java打印它,你看到调用的结果Date.toString().这根本不会改变价值.

如果要以Date特定方式格式化值,请使用SimpleDateFormat- 但要非常清楚Date对象本身没有格式(或时区或日历),并且您的数据库可能也没有.(数据库中内容的确切细节取决于数据库和列类型.)

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

例如,如果我写:

int x = 0xff;
int y = 255;
System.out.println(x == y);
Run Code Online (Sandbox Code Playgroud)

然后,打印"真" -因为无论x并且y具有相同的值.事实上,在一种情况下,我使用十六进制表示并不会将值作为数字影响.