请考虑以下代码段:
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());
Run Code Online (Sandbox Code Playgroud)
futureDate.toString()的打印输出是:
..... YEAR = 2011,月= 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,微差= 117,ZONE_OFFSET = -18000000,DST_OFFSET = 3600000]
这表明Calendare对象保存了正确的日期.但是,在转换为sql日期并存储在数据库(MySQL通过JDBC)之后,MySQL表显示此日期的"2011-12-14"而不是"2011-11-14".我会怀疑语言环境和时区,但这些会导致一天中的时间不符合日期的月份部分.
我做错了什么线索?