6

我正在尝试打印一些东西,例如今天的日期、星期几、从现在起 100 天后的日期、从现在起一百天后的星期几、我的生日和星期几,以及我生日和一周中的那一天之后的 10,000 天。现在,我知道 GregorianCalendar 一月从 0 开始,十二月到 11。我明白了,所以当我尝试打印日期时,它说今天的日期是 2012 年 8 月 25 日而不是 12 年 9 月 25 日,但我不知道如何在不提前设置日期的情况下更正此问题月,然后实际上将月份放入 10 月而不是 9 月。

这是我目前正在处理的内容。

        GregorianCalendar cal = new GregorianCalendar();
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        int month = cal.get(Calendar.MONTH);
        int year = cal.get(Calendar.YEAR);
        int weekday = cal.get(Calendar.DAY_OF_WEEK);
        cal.add(Calendar.DAY_OF_MONTH, 100);
        int dayOfMonth2 = cal.get(Calendar.DAY_OF_MONTH);
        int month2 = cal.get(Calendar.MONTH);
        int year2 = cal.get(Calendar.YEAR);
        int weekday2 = cal.get(Calendar.DAY_OF_WEEK);
        GregorianCalendar birthday = new GregorianCalendar(1994, Calendar.JANUARY, 1);
        int dayOfMonth3 = birthday.get(Calendar.DAY_OF_MONTH);
        int month3 = birthday.get(Calendar.MONTH);
        int year3 = birthday.get(Calendar.YEAR);
        int weekday3 = birthday.get(Calendar.DAY_OF_WEEK);
        birthday.add(Calendar.DAY_OF_MONTH, 10000);
        int weekday4 = birthday.get(Calendar.DAY_OF_WEEK);
        int dayOfMonth4 = birthday.get(Calendar.DAY_OF_MONTH);
        int month4 = birthday.get(Calendar.MONTH);
        int year4 = birthday.get(Calendar.YEAR);
        System.out.printf("Todays date is " +month + "/" +dayOfMonth +"/" +year +".");
        System.out.printf(" It is day " +weekday +" of the week");
        System.out.println("");
        System.out.printf("In 100 days it will be " +month2 + "/" +dayOfMonth2 +"/" +year2 +". ");
        System.out.printf("Day " +weekday2 +" of the week");
        System.out.println("");
        System.out.printf("My Birthday is " +month3 + "/" +dayOfMonth3 +"/" +year3 +". "+"Day " +weekday3 +" of the week");
        System.out.println("");
        System.out.printf("10,000 days after my birthday is " +month4 + "/" +dayOfMonth4 +"/" +year4 +". " +"Day " +weekday4 +" of the week");

所以我需要帮助更正今天日期、100 天后的日期、我的生日日期和生日后 10,000 天的月份。非常感谢任何帮助或见解。

4

3 回答 3

9

我明白了,所以当我尝试打印日期时,它说今天的日期是 2012 年 8 月 25 日而不是 12 年 9 月 25 日,但我不知道如何在不提前设置日期的情况下更正此问题月

如果您要通过以下方式打印月份

int month = cal.get(Calendar.MONTH);
...
 System.out.printf("Todays date is " + month + ...

那你要打印month + 1,不只是month

SimpleDateFormat最终,尽管您将通过将日期格式化为字符串来节省更多时间和头痛。

于 2012-09-25T23:38:12.677 回答
6

是的,您需要知道 Calendar.JANUARY 等于零。对于日历,月份从零开始。

你在这里工作太辛苦了。你在处理原语太多了。

以下是如何打印今天的日期:

DateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd");
formatter.setLenient(false);
Date today = new Date();
System.out.println(formatter.format(today));  

以下是如何从现在开始获得 100 天:

Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.add(Calendar.DAY_OF_YEAR, 100);
Date oneHundredDaysFromToday = calendar.getTime();
System.out.println(formatter.format(oneHundredDaysFromToday));

停止处理所有这些int价值观。

于 2012-09-25T23:38:03.867 回答
2
于 2018-02-06T02:36:25.493 回答