这个不算是错误,在java中month的范围是0-11,所以你定义的实际上是4月31日(没有这一天),Date类内部把它处理成5月1日,所以你看到的是 m=4,d=1(代表5月1日)另外,new Date (2004, 3, 31)这种用法已经建议废弃了,最好改用GregorianCalendar类

解决方案 »

  1.   

    因为Java的Month是从0开始的(真是变态),所以3,31是表示4月31日。所以自动跳到5月了
      

  2.   

    >因为Java的Month是从0开始的(真是变态),这个主要是因为西方人给每个月都起了名字,谈到五月,他们说May, (虽然可以写5),因此他们觉得没什么问题,可是到了东方,一切就混乱了
      

  3.   

    变态不只是月,星期也是 星期一的值是2哎,没办法谁让java是美国人的呢