java - 公历添加日期和打印

标签 java

我正在尝试创建一个简单的日历应用程序。一般来说,我想在月 View 中打印日历。我能够找到该月第一天的日期和位置。之后,我想在日历中添加一天并打印第二天,直到打印完该月的所有天。但是,当我向日历添加一个时,我没有得到 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!");
    }

}

最佳答案

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

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

8 月发布时的月份日期。8+1=9

<小时/>

要创建一个将月份中的日期初始化为 1 的 GregorianCalendar,您需要使用 GregorianCalendar(intyear,intmonth,intdayOfMonth)。正如 javadoc 中所述,此构造函数

Constructs a GregorianCalendar with the given date set in the default time zone with the default locale.

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

关于java - 公历添加日期和打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933192/

相关文章:

java - 如何保证一个java程序只能执行一个实例?

java - java中的高阶函数和闭包

java - 使用 JTable java 将数据添加到数据库中两次

java - 使用递归查找数组最大数量的代码始终返回数组中的最后一项

java - 使用列的 IF 更新 SQLite (Android) 中的表

java - org.xmlpull.v1.XmlPullParserException

java - 如何在java中通过一个套接字发送多个对象?

java - Solrj NoClassDefFoundError

java - Caliper:如何运行多个基准测试?

java - 使用 JDBC 以用户定义的记录作为其 IN 参数调用 PL/SQL 过程