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
。
任何人都可以帮助理解这个吗?
它接受 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");
我正在使用下面的代码,
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
。
任何人都可以帮助理解这个吗?
它接受 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");