黑马程序员技术交流社区

标题: 发现了个Calendar类很神奇的问题 [打印本页]

作者: kira    时间: 2014-2-2 17:00
标题: 发现了个Calendar类很神奇的问题
本帖最后由 kira 于 2014-2-2 17:01 编辑

各位新年好
今天复习到Date类 以及Calendar
视频中毕老师是用查表法 来定制星期的

他是这么写的
  1. import java.util.Calendar;

  2. public class CalendarDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 Calendar carlen =Calendar.getInstance();//获取calendar
  9. //                System.out.println(carlen.get(Calendar.YEAR)+"年");//获取年
  10.                 String[] moon ={"一月","二月","三月","四月",
  11.                                                 "五月","六月","七月","八月",
  12.                                                 "九月","十月","十一月","十二月"};
  13.                 String[] week ={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
  14.                 int index = carlen.get(Calendar.MONTH);//获取月份角标
  15.                 int indexweek = carlen.get(Calendar.WEDNESDAY);
  16.                 //以下月份写为
  17.         System.out.println(carlen.get(Calendar.YEAR)+"年"+
  18.                         (moon[index])+
  19.                         carlen.get(Calendar.DATE)+"日"+
  20.                         carlen.get(Calendar.HOUR)+"小时"+week[indexweek]);
  21.         }

  22. }
复制代码

但运行之后 发现老是前一天的 他说1角标代表星期日
我经过改动 把空值去了 因为我发现 如果把空值去掉替换成星期六的位置 结果也一样
还不是正确的星期 结果我这次直接大胆的又前推了一位
我是这么写的
  1. import java.util.Calendar;

  2. public class CalendarDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 Calendar carlen =Calendar.getInstance();//获取calendar
  9. //                System.out.println(carlen.get(Calendar.YEAR)+"年");//获取年
  10.                 String[] moon ={"一月","二月","三月","四月",
  11.                                                 "五月","六月","七月","八月",
  12.                                                 "九月","十月","十一月","十二月"};
  13.                 String[] week ={"星期五","星期六","星期日","星期一","星期二","星期三","星期四",};//新写法
  14.                 int index = carlen.get(Calendar.MONTH);//获取月份角标
  15.                 int indexweek = carlen.get(Calendar.WEDNESDAY);
  16.                 //以下月份写为
  17.         System.out.println(carlen.get(Calendar.YEAR)+"年"+
  18.                         (moon[index])+
  19.                         carlen.get(Calendar.DATE)+"日"+
  20.                         carlen.get(Calendar.HOUR)+"小时"+week[indexweek]);
  21.         }

  22. }
复制代码
两处代码不同之处在于角标的获取
结果我自己写的反而是正确能获取时间的 这个是老师出现的问题么 还是什么原因
搞了半天实在没想明白 求大神解答一下{:soso_e136:}



作者: zhangchao    时间: 2014-2-2 21:16
你确定是毕老师的源代码?看代码这里的需求应该是显示当前的年月日,时间和星期。
/*出问题是这句代码*/
int indexweek = carlen.get(Calendar.WEDNESDAY);
/*正确的应该是*/
int indexweek = carlen.get(Calendar.DAY_OF_WEEK);
个人见解,欢迎指正
作者: 榨菜    时间: 2014-2-2 21:23
我先试了下你发的两个代码,是你的对。

我得出的结论是你代码写错了。。。。

  1. int indexweek = carlen.get(Calendar.WEDNESDAY);
复制代码

应该是
  1. int indexweek = carlen.get(Calendar.[color=Red]DAY_OF_WEEK[/color]);
复制代码

用这个是毕老师的对,你的是错
作者: 榨菜    时间: 2014-2-2 21:24
int indexweek = carlen.get(Calendar.DAY_OF_WEEK);
作者: kira    时间: 2014-2-4 20:31
榨菜 发表于 2014-2-2 21:24
int indexweek = carlen.get(Calendar.DAY_OF_WEEK);

原来如此 看来我把调用的对象搞错了 谢啦
作者: kira    时间: 2014-2-4 20:32
zhangchao 发表于 2014-2-2 21:16
你确定是毕老师的源代码?看代码这里的需求应该是显示当前的年月日,时间和星期。
/*出问题是这句代码*/
in ...

嗯 多谢 现在知道了
作者: zhangchao    时间: 2014-2-4 23:15
kira 发表于 2014-2-4 20:32
嗯 多谢 现在知道了

客气,互相学习




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