Java中的错误(日期)日期返回

时间:2013-11-24 21:48:32

标签: java date

我的代码中有以下行:

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

任何想法有什么不对?

4 个答案:

答案 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。