黑马程序员技术交流社区

标题: Calendar类 [打印本页]

作者: lily    时间: 2011-9-15 17:25
标题: Calendar类
[code=java]import java.util.*;
class TestCalendar {

        public static void main(String[] args) {
                Calendar c1=Calendar.getInstance();
                System.out.println(c1.get(Calendar.YEAR)+"年"+c1.get(c1.MONTH)+
                        "月"+c1.get(c1.DAY_OF_MONTH)+"日"+c1.get(c1.HOUR)+":"
                        +c1.get(c1.MINUTE)+":"+c1.get(c1.SECOND));
                c1.add(c1.DAY_OF_YEAR,315);
                System.out.println(c1.get(Calendar.YEAR)+"年"+c1.get(c1.MONTH)+
                        "月"+c1.get(c1.DAY_OF_MONTH)+"日"+c1.get(c1.HOUR)+":"
                        +c1.get(c1.MINUTE)+":"+c1.get(c1.SECOND));
        }        
}[/code]
大家帮忙看下这个程序,是要在显示器上显示当前时间和315天后的时间,但是我运行显示的时间却不正确,月份少了1个月,小时如果是12点前则正确,如果是中午12点后则少了12小时.
即: 如现在是2011年9月15日17:38:04,显示就是2011年8月15日5:38:04
     如现在是2011年9月15日 5:38:04,显示就是2011年8月15日5:38:04.帮忙看下哪里出了问题
作者: 匿名    时间: 2011-9-15 21:32
呵呵,代码没全贴出来,还真看不出是哪儿出了问题。。。[code=java]import java.util.*;
import java.text.SimpleDateFormat;
class MyTimerTask extends TimerTask {
        private Timer tm = null;
        public MyTimerTask(Timer tm) {
                this.tm = tm;
        }
        public void run()
        {
                try
                {
                Runtime.getRuntime().exec("calc.exe");
                }catch (Exception e)
                {
                        e.printStackTrace();
                }
        }
}
public class TestCalendar {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Calendar cl = Calendar.getInstance();
                System.out.println(cl.get(Calendar.YEAR)+ "年" +cl.get(cl.MONTH) +"月" + cl.get(cl.DAY_OF_MONTH)+"日"
                                + cl.get(Calendar.HOUR_OF_DAY)+ ":" +cl.get(cl.MINUTE) +":" + cl.get(cl.SECOND));
                cl.add(cl.DAY_OF_YEAR, 315);
                System.out.println(cl.get(Calendar.YEAR)+ "年" +cl.get(cl.MONTH) +"月" + cl.get(cl.DAY_OF_MONTH)+"日"
                                + cl.get(Calendar.HOUR_OF_DAY)+ ":" +cl.get(cl.MINUTE) +":" + cl.get(cl.SECOND));
       
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
               
                try
                {
                Date d = sdf.parse("2003-03-15") ;
                System.out.println(sdf1.format(d));
                }catch(Exception e)
                {
                        e.printStackTrace();
                }
               
                Timer tm = new Timer();
                tm.schedule(new MyTimerTask(tm), 3000);
                tm.cancel();
        }
       

}[/code]
作者: 匿名    时间: 2011-9-15 22:05
Calendar.Month   :  一年中的第一个月是 JANUARY,它为 0  ,,9月就是8
所以  你这里的月份要+1显示
小时少了,用这个 字段  HOUR_OF_DAY  24小时的。。HOUR是12小时的
作者: 匿名    时间: 2011-9-15 22:41
哦,是的,HOUR_OF_DAY 就对了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2