【发布时间】:2011-12-08 18:41:38
【问题描述】:
考虑以下 sn-p:
Calendar futureDate = Calendar.getInstance();
int year = 2011;
int month = 11;
int day = 14;
futureDate.set(year,month, day);
System.out.println(futureDate.toString());
java.sql.Date sqlDate = new java.sql.Date( futureDate.getTime().getTime());
futureDate.toString() 的打印输出是:
.....YEAR=2011,MONTH=11,WEEK_OF_YEAR=43,WEEK_OF_MONTH=4,DAY_OF_MONTH=14,DAY_OF_YEAR=289,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=11,HOUR_OF_DAY= 11,MINUTE=32,SECOND=51,MILLISECOND=117,ZONE_OFFSET=-18000000,DST_OFFSET=3600000]
这表明 Calendare 对象拥有正确的日期。但是,在转换为 sql 日期并存储在数据库中(通过 JDBC 的 MySQL)后,MySQL 表显示该日期的“2011-12-14”而不是“2011-11-14”。 我会怀疑语言环境和时区,但这些会导致一天中的时间不一致,而不是日期的月份部分。
我做错了什么的任何线索?
【问题讨论】: