试试这个:import java.util.*;public class Test
{
  public static void main(String[] args)
  {
    Calendar ca=Calendar.getInstance();
    System.out.println("day: "+ca.get(ca.DATE));
    System.out.println("month: "+ca.get(ca.MONTH));    
    System.out.println("year: "+ca.get(ca.YEAR));
  }

解决方案 »

  1.   

    哈哈。那不是时间,是得到时间某个值得field.
      

  2.   

    月分从0开始,大概sun规定的
    你的问题在于你取到的是一种静态变量,
    程序中用来给某些方法使用的变量,而不是真正的日期
    比如他们是给get方法做变量
      

  3.   


      多谢两位兄弟,不过俺还不是很清楚,想请两位进一步指点,呵呵。  比如俺在程序里加一行语句,输出整个ca:
      System.out.println("the ca: "+ca);
      
      结果是:
      the ca: java.util.GregorianCalendar[time=1012466329040,areFieldsSet=true,areAl
    lFieldsSet=true,lenient=true,zone=java.util.SimpleTimeZone[id=Asia/Shanghai,offs
    et=28800000,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMo
    nth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth
    =0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDays
    InFirstWeek=1,ERA=1,YEAR=2002,MONTH=0,WEEK_OF_YEAR=5,WEEK_OF_MONTH=5,DAY_OF_MONT
    H=31,DAY_OF_YEAR=31,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=4,HOUR_OF_
    DAY=16,MINUTE=38,SECOND=49,MILLISECOND=40,ZONE_OFFSET=28800000,DST_OFFSET=0]   很明显地看到:MONTH=0,为什么把它输出时就变了呢?这个静态变量有什么特别的地方吗?
      

  4.   

    输出也是0,你看看我那段东西运行会怎么样
    你的程序输出的信息month没出现在上面,
    那个是程序定死的一个常量,就是说
    set(int)方法如果参数传5,返回就是年份
    传2就返回月
    传1就返回日
      

  5.   

    希望我写的这个程序对你也有所帮助。
    import java.util.*;
    import java.text.*;public class TestCalendar{    public static void main(String args[]){
            Calendar tmpCal=Calendar.getInstance();
            Date tmpTime=tmpCal.getTime();
            SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss.SSS"); //规定时间的显示格式
            String curTime=sdf.format(tmpTime);
            System.out.println("The current system time :"+curTime);
        }
    }另外:
    yourCalendar.get(Calendar.MINUTE);
    yourCalendar.get(Calendar.SECOND);
    yourCalendar.get(Calendar.MILLISECOND);
    等你都可以试试。
      

  6.   


        终于明白了,原来MONTH,YEAR,DAY等都是Calendar的数组的索引值,是不能改变的。只能用get,set方法来获取,设定日期.因为get(Calendar.MONTH)里的Calendar.MONTH实际是fields[Calendar.MONTH]的意思,是真正的月值。
       多谢各位,买单,呵呵。