java.sql.Date使用了错误的日期
我使用下面的代码java.sql.Date使用了错误的日期,java,date,Java,Date,我使用下面的代码 private static Date date = new Date (2014-1900,11,25); System.out.println(date); 它正在显示2014-12-25。我不明白为什么它给我的日期是12 如果我给 private static Date date = new Date (2014-1900,12,25); 它正在返回2015-01-25 有人能帮助理解这一点吗? 它接受12月月份为11,因为月份从0-11开始首先,您不应该使用此构
private static Date date = new Date (2014-1900,11,25);
System.out.println(date);
它正在显示2014-12-25
。我不明白为什么它给我的日期是12
如果我给
private static Date date = new Date (2014-1900,12,25);
它正在返回2015-01-25
有人能帮助理解这一点吗?
它接受
12月
月份为11
,因为月份从0-11开始
首先,您不应该使用此构造函数,因为它已被弃用
第二:请参阅此构造函数的:
参数:年份-
年份减去1900.month-0-11之间的月份。日期-日期
1-31之间的月份。另请参见:日历
month是一个基于空的值,因此0-->Jan。。。11-->十二月从
月份范围从
0-11,即1月到12月为避免使用定价降低的构造函数来设置日期,建议使用类
您还可以使用设置/格式化日期值:-
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date date = sdf.parse("25-11-2014");
月份以0为基础。最好使用新的java time api,或者如果无法升级到java 8,则使用joda time。使用simpledateformat启动日期只会浪费CPU周期和可能的线程问题,但最好是浪费CPU周期,而不是使用new date(2014-1900,11,25)浪费时间设置日期代码>不知道出了什么问题。我已经更新了我的答案,请再次检查,看看是否真的需要否决!
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2014);
calendar.set(Calendar.MONTH, Calendar.NOVEMBER);
calendar.set(Calendar.DAY_OF_MONTH, 25);
Date date = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date date = sdf.parse("25-11-2014");