java.sql.Date错误的日期

时间:2015-01-09 06:52:43

标签: 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

任何人都可以帮助理解这个吗?

4 个答案:

答案 0 :(得分:3)

Calendar

它接受December月作为11,因为月份从0 - 11开始

答案 1 :(得分:1)

首先,您不应该使用此构造函数,因为它已被弃用。

第二:请参阅此consturctor的documentation

  

参数:年 -   年份减去1900.month - 0-11之间的月份   1-31之间的月份。参见:日历

month是基于null的值,因此0 - > Jan ... 11 - >癸

答案 2 :(得分:0)

来自java docs

Parameters:
year the year minus 1900.
month the month between 0-11.
date the day of the month between 1-31.

月份范围为0-11, ie Jan - Dec

答案 3 :(得分:-1)

避免使用经过删除的Date()构造函数来设置日期,建议使用Calendar

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设置/格式化日期值: -

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date date = sdf.parse("25-11-2014");