公历日历添加天数和打印

时间:2015-03-08 23:35:09

标签: java

我正在尝试创建一个简单的日历应用。一般来说,我想在月视图中打印日历。我能够找到该月第一天的日期和位置。在那之后,我想在日历中添加一天并在第二天打印,直到我打印了那个月的所有日子。但是,当我在日历中添加一个时,我不会得到2(第一天是1),我得到9.有人请让我知道它为什么这样做。这就是我到目前为止所拥有的:

import java.util.Calendar;
import java.util.GregorianCalendar;

enum MONTHS
{
    January, February, March, April, May, June, July, August, September, October, November, December;
}
enum DAYS
{
    Su, Mo, Tu, We, Th, Fr, Sa;
}
public class MyCalendarTester {

    static GregorianCalendar cal = new GregorianCalendar(); // capture today

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MONTHS[] arrayOfMonths = MONTHS.values();
        DAYS[] arrayOfDays = DAYS.values();
        System.out.println("    " + arrayOfMonths[cal.get(Calendar.MONTH) - 1] + " " + cal.get(Calendar.YEAR)); //prints the month and year

        for(int i = 0; i < arrayOfDays.length; i++){
            if(i == 0){
                System.out.print(arrayOfDays[i]);
            }
            else{
                System.out.print(" " + arrayOfDays[i]);
            }
        }//print days of week

        System.out.println();
        for(int i = 0; i < arrayOfDays.length; i++){
            if(!arrayOfDays[i].equals(arrayOfDays[cal.get(Calendar.DAY_OF_WEEK) - 1])){
                System.out.println("  ");
            }
            else{
                System.out.print(" " + Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));
                break;
            }
        }

        cal.add(Calendar.DAY_OF_MONTH, 1);
        System.out.println("  " + cal.get(Calendar.DATE));
        System.out.println("I think we're done here!");
    }

}

2 个答案:

答案 0 :(得分:2)

没有任何参数的GregorianCalendar()构造函数构造今天日期GregorianCalendar类的实例。在您的代码中,您使用此构造函数:

static GregorianCalendar cal = new GregorianCalendar(); // capture today

本月的某一天,在8 8+1=9

发布时

要创建一个GregorianCalendar,并将当月初始化为1,您需要使用GregorianCalendar(int year,int month,int dayOfMonth)。正如javadocs中所述,这个构造函数

  

构造一个GregorianCalendar,并在默认时区中使用默认语言环境设置给定日期。

static GregorianCalendar cal = new GregorianCalendar(2015,5,1);

答案 1 :(得分:1)

您添加一个的日历对象是static GregorianCalendar cal = new GregorianCalendar(); - 这就是为什么它说9(3月9日)