java.sql.Date 取错了日期

java.sql.Date is taking wrong 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

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

Calendar

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

开始

首先你不应该使用这个构造函数,因为它已被弃用。

其次:看这个构造函数的documentation

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

month 是一个基于 null 的值,所以 0 --> Jan ... 11 --> Dec

来自 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

避免使用贬值的 Date() constructor for setting dates, It is recommended to use Calendar class

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 用于 setting/formatting 日期值:-

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