import java.util.Calendar;
import java.util.Date;public class CalenderTest
{ public static void main(String[] args)
{
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTimeInMillis());
        cal.set(1999, 12, 31); // Year, Month, Day
        System.out.println(cal.get(Calendar.YEAR) + " " + cal.getTime());        Date d = cal.getTime();
        System.out.println(d.getDay() + "  " + d);
}}

解决方案 »

  1.   

    最好是使用Calendar的子类GregorianCalendar,而不是直接使用Calendar,JDK是这么推荐使用的
      

  2.   


    用了GregorianCalendar,还是不行,就是搞不清楚为什么我把日期设成1999年12月31日时,打印出来的日期尽然是2000年1月31日,期待解答,小弟在线等!
      

  3.   

    import java.text.DateFormatSymbols;
    import java.util.Calendar;
    import java.util.GregorianCalendar;public class Test {
        public static void main(String[] args) {
            GregorianCalendar c = new GregorianCalendar();
            c.set(1999, 12, 31); // 1月实际上这里是0,所以这里要表示12月必须用11,用了12表示多加一年,即2000年
            System.out.printf("Year: %d\n", c.get(Calendar.YEAR));
            System.out.printf("Month: %d\n", c.get(Calendar.MONTH));
            System.out.printf("Day: %d\n", c.get(Calendar.DAY_OF_MONTH));
            
            System.out.println("正确设置12月........");
            c.set(1999, 11, 31); // 1月实际上这里是0,所以这里要表示12月必须用11,用了12表示多加一年,即2000年
            System.out.printf("Year: %d\n", c.get(Calendar.YEAR));
            int month = c.get(Calendar.MONTH);
            System.out.printf("Month: %d: %s\n", month, new DateFormatSymbols().getMonths()[month]);
            System.out.printf("Day: %d\n", c.get(Calendar.DAY_OF_MONTH));
        }
    }