黑马程序员技术交流社区

标题: Calender类的问题 [打印本页]

作者: 魏亮    时间: 2012-9-26 22:49
标题: Calender类的问题
import java.util.*;
import java.text.*;
class CalendarDemo
{
        public static void main(String[] args)
        {
                Calendar c = Calendar.getInstance();
                int index = c.get(Calendar.PM);
                int x = c.get(Calendar.DAY_OF_MONTH);
       
                sop(c.get(Calendar.SUNDAY));//2012    //十分好奇调用这些字段会是神马结果,结果怎么都是2012呀??还有许多字段                  
                                                                             //都是这样,谁能告诉我为啥呀?
                 sop(c.get(Calendar.PM));//打印结果为啥是2012
        }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}



作者: 罗磊    时间: 2012-9-26 23:42
我用Debug测试!也没看出个所以然来!所以!我也不懂 !一起期待答案吧!
作者: 夏天    时间: 2012-9-27 10:29
I don't Know
作者: 黑幕    时间: 2012-9-28 19:16
坐等答案
作者: 王得新    时间: 2012-9-28 20:14
看了下源代码:
下面是Calendar这个类中定义的部分静态整形常量(观察一下应该能知道文什么了)
public final static int YEAR = 1;
public final static int MONTH = 2;
public final static int WEEK_OF_YEAR = 3;
public final static int WEEK_OF_MONTH = 4;
=================================
public final static int SUNDAY = 1;
public final static int MONDAY = 2;
public final static int TUESDAY = 3;
public final static int WEDNESDAY = 4;
=================================
public final static int PM = 1;
===================================
            System.out.println("YEAR....."+c.get(Calendar.YEAR));
            System.out.println("MONTH....."+c.get(Calendar.MONTH));
            System.out.println("WEEK_OF_YEAR....."+c.get(Calendar.WEEK_OF_YEAR));
            System.out.println("WEEK_OF_MONTH....."+c.get(Calendar.WEEK_OF_MONTH));
            
            System.out.println("==================================");
            System.out.println("SUNDAY....."+c.get(Calendar.SUNDAY));
            System.out.println("MONDAY....."+c.get(Calendar.MONDAY));
            System.out.println("TUESDAY....."+c.get(Calendar.TUESDAY));
            System.out.println("WEDNESDAY....."+c.get(Calendar.WEDNESDAY));
            System.out.println("PM....."+c.get(Calendar.PM));
结果为:

YEAR.....2012
MONTH.....8
WEEK_OF_YEAR.....39
WEEK_OF_MONTH.....5
==================================
SUNDAY.....2012
MONDAY.....8
TUESDAY.....39
WEDNESDAY.....5
PM.....2012


作者: 李润根    时间: 2012-9-28 20:23
public final static int YEAR = 1;

sop(c.get(Calendar.SUNDAY));  
sop(c.get(Calendar.PM));

Calendar.SUNDAY//星期天是第一天,返回1
Calendar.PM//AM=0 PM=1

c.get(1) //1代表YEAR

应该明白为什么输出 2012 了吧~~~

作者: 张君    时间: 2012-9-28 22:37
我也是菜鸟。不懂的很多,楼主这个问题我觉得可能是这样:
第一个 2012 的原因,calendar.sunday 的常量值就是1,而year 的常量值也是1.  这样的话用instance打印的值自然是2012  
如果你想打印当前的月份,那就把sop(c.get(Calendar.SUNDAY)) 该为 sop(c.get(Calendar.DAY_OF_MONTH))或者 直接改成 sop(x)。


第二个 2012 原因也是 常量值是1,如果你想打印当前的小时那,不如加上这句话int hour=c.get(Calendar.HOUR);



改成如下程序就好了


import java.util.*;
import java.text.*;
class heima
{
        public static void main(String[] args)
        {
                Calendar c = Calendar.getInstance();
               
                int x = c.get(Calendar.DAY_OF_MONTH);
                int hour=c.get(Calendar.HOUR);
             int pm=c.get(Calendar.PM);
              sop(x);//2012           
               sop(hour);


    }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}







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