我的代码中有以下行:
this.date = new Date(year, month, day);
但是当我给出时,例如:
year = 2008
month = 1
day = 20
我明白了:
Thu Feb 20 00:00:00 BRT 3908
或者说:
year = 2008
month = 3
day = 9
我明白了:
Thu Apr 09 00:00:00 BRT 3908
任何想法有什么不对?
答案 0 :(得分:5)
您应该阅读有关构造函数的JavaDoc。参数不仅仅是您认为的参数。
它说:
year
- 减去1900年;必须是0到8099.(注意8099是9999减去1900.)
month
- 0到11
day
- 1到31
但是,正如Docs所说,它已被弃用。使用Calendar
构建日期。或者使用JodaTime。
答案 1 :(得分:0)
月份为零。所以0是Jan,1是2月,依此类推。
答案 2 :(得分:0)
试试这个
Date date= new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(format.format(date));
答案 3 :(得分:0)
正如其他人所说的那样,你假设月数是基于1的计数。但实际上它们是基于0的计数。 java.util.Date/Calendar类的许多问题之一。
作为一种解决方法,使用预定义的常量而不是试图记住那个荒谬的编号方案:
更好的是,获得一个真正的日期时间框架:(a)Joda-Time或(b)Java 8中捆绑的类似和新JSR 310: Date and Time API以取代java.util.Date/Calendar。