黑马程序员技术交流社区

标题: 关于Calendar类的问题 [打印本页]

作者: 戴振良    时间: 2012-2-16 21:33
标题: 关于Calendar类的问题
本帖最后由 戴振良 于 2012-2-18 16:09 编辑
  1. import java.util.*;//Calendar位于此包中
  2. public class TestCalendar {
  3.         public static void main(String[] args) {
  4.                 Calendar c1=Calendar.getInstance();
  5.                 System.out.println(c1.get(Calendar.YEAR)+"年"+c1.get(c1.MONTH)+"月"+
  6.                         c1.get(c1.DAY_OF_MONTH)+"日:"+c1.get(c1.HOUR)+"时"+c1.get(c1.MINUTE)+
  7.                         "分"+c1.get(c1.SECOND)+"秒");
  8.                 c1.add(c1.DAY_OF_YEAR,315);
  9.                 System.out.println(c1.get(Calendar.YEAR)+"年"+c1.get(c1.MONTH)+"月"+
  10.                         c1.get(c1.DAY_OF_MONTH)+"日:"+c1.get(c1.HOUR)+"时"+c1.get(c1.MINUTE)+
  11.                         "分"+c1.get(c1.SECOND)+"秒");
  12.         }       
  13. }
复制代码
2012年1月13日:5时43分52秒
2012年11月24日:5时43分52秒

Calendar.getInstance()方法获取的不是当前的时间吗?
而我当时的时间是2012年2月14日,怎么输出了1月13日呢?小时也不对。为什么呢?
有图有真相:

作者: 彭小芳    时间: 2012-2-16 21:45
本帖最后由 pengfangjava 于 2012-2-16 22:00 编辑

关于月份的差距,可以从JDK 帮助文档中找到答案:The first month of the year is JANUARY which is 0;
小时的差距是因为时区引起的时差,你可以这样写:Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00"));

作者: 黄锦成    时间: 2012-2-16 21:52
Calendar中的月份是从0开始的,你要自己加1
作者: 彭小芳    时间: 2012-2-16 22:01
关于月份的差距,可以从JDK 帮助文档中找到答案:The first month of the year is JANUARY which is 0;
小时的差距是因为时区引起的时差,你可以这样写:Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00"));





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