兄弟对JAVA基本一窍不通,弄这个东西纯属赶鸭子上架,可却碰到了一个奇怪的问题,请各位大侠帮忙,谢谢啦~Date dt = new Date(2009,5,31,15,37,0)据我观察,这个dt应该是2009年5月31日15点37分吧,可实际情况却不是,莫名其妙的变成了2009年6月1日15点37分……哪位大侠给兄弟指点一下迷津吧,呵呵,谢谢~

解决方案 »

  1.   

    Java中规定日期类型用0-30表示1-31天。所以31实际的表示就是32,也就是6月1日了。这在API中有描述的。
      

  2.   

    是3909年6月1日15点37分……吧
    查看参考文档可知道:
    已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min) 或 GregorianCalendar(year + 1900, month, date, hrs, min) 取代。 分配 Date 对象并初始化此对象,以表示本地时区中由 year、month、date、hrs 和 min 参数指定的分钟的开始瞬间。 参数:
    year - 减 1900 的年份。
    month - 0-11 之间的月份。
    date - 一月中 1-31 之间的某一天。
    hrs - 0-23 之间的小时数。
    min - 0-59 之间的分钟数。因为你的2009,那么+1900就是3909
    因为5月实际是5+1就是6月,
    而6月是没有31的,最大就是30超过一天,顺势往后一天,也就是
    7月1日我的电脑上测试的结果是:
    3909年07月01日03时37分
      

  3.   

    上面的代码是Date dt = new Date(2009,5,31,15,37,0); 
    SimpleDateFormat f = new SimpleDateFormat("yyyy年MM月dd日hh时mm分");
    System.out.println(f.format(dt));
    把hh换成HH就是24小时制的了