先贴出代码:
import java.util.*;
public class TestCalendar
{
       public static void main(String []args)
       {
Calendar cl = Calendar.getInstance();
int year = cl.get(Calendar.YEAR);
int month = cl.get(cl.MONTH)+1;   //对于类中的静态常量,可以通过实例对象调用,也可以直接由类来调用
int day = cl.get(cl.DATE);
  //int day = cl.get(cl.DAY_OF_MONTH);
int week = cl.get(cl.DAY_OF_WEEK)-1;
String []str = {"日","一","二","三","四","五","六"};
int hour = cl.get(cl.HOUR_OF_DAY);
int minute = cl.get(cl.MINUTE);
int second = cl.get(cl.SECOND);
System.out.println(year+"年"+month+"月"+day+"日 星期"+str[week]+" "+hour+":"+minute+":"+second);   
cl.add(cl.DAY_OF_YEAR,316);         //System.out.println(year+"年"+month+"月"+day+"日 星期"+str[week]+" "+hour+":"+minute+":"+second);    int week2 = cl.get(cl.DAY_OF_WEEK)-1;     
System.out.println(cl.get(Calendar.YEAR)+"年"+(cl.get(cl.MONTH)+1)+"月"+cl.get(cl.DATE)+"日 星期"+str[week2]+" "+cl.get(cl.HOUR_OF_DAY)+":"+cl.get(cl.MINUTE)+":"+cl.get(cl.SECOND));   
  
       }
}如果后面输出日期的语句按照注释掉的那句写,则日期根本没改变!为什么非得像下面那样写日期才是315天后的?这么说之前定义year等int型变量时它们的值就已经确定了??

解决方案 »

  1.   

    拜托!先别学着用Calendar,先学会看下面的代码!lz别把程序当作数学公式。int x = 100;
    int y = x + 1;
    x += 300;
    System.out.println(x);
    System.out.println(y);
    int y = x + 1并不是数学公式。数学公式中代表了y永远比x大一。
    而程序是指,计算当前x+1的结果,赋值给y。从此后,除非有其他指令在把他们关联起来,否则x和y之间没有关系
      

  2.   

    cl.add(cl.DAY_OF_YEAR,316);将316加到c1.DAY_OF_YEAR上,并没有加到year上。还要用month,day等变量那就重新赋值。import java.util.*;
    class ok{
    public static void main(String[] args){
    Calendar cl = Calendar.getInstance();
    int year = cl.get(Calendar.YEAR);
    int month = cl.get(cl.MONTH)+1; //对于类中的静态常量,可以通过实例对象调用,也可以直接由类来调用
    int day = cl.get(cl.DATE);
       //int day = cl.get(cl.DAY_OF_MONTH);
    int week = cl.get(cl.DAY_OF_WEEK)-1;
    String []str = {"日","一","二","三","四","五","六"};
    int hour = cl.get(cl.HOUR_OF_DAY);
    int minute = cl.get(cl.MINUTE);
    int second = cl.get(cl.SECOND);
    System.out.println(year+"年"+month+"月"+day+"日 星期"+str[week]+" "+hour+":"+minute+":"+second);
    cl.add(cl.DAY_OF_YEAR,316);
    month = cl.get(cl.MONTH)+1;
    week=cl.get(cl.DAY_OF_WEEK)-1;
    day = cl.get(cl.DATE);
    System.out.println(year+"年"+month+"月"+day+"日 星期"+str[week]+" "+hour+":"+minute+":"+second);
    }
    }