0

我有涉及用户输入 2 个整数(月份和年份)的作业,我想知道如何做到这一点,我在日历类文档中进行了一些搜索,但没有找到我要搜索的内容。我要做的主要事情是打印一个日历,就像 Windows 中的日历一样,我从用户那里得到的唯一输入是月份和年份的数字,我需要找到一种方法来查找月份是 31 的天气、30、29 或 28 天以及该月的开始日期。 http://lifehacker.com/assets/2006/06/vista-windows-calendar.jpg这是我想做的,但作为文本而不打印其他月份的日子。

4

4 回答 4

1

看看DateFormatSymbols。这具有检索月份的方法。然后您可以使用数组中的索引位置(月份号)来获取月份

   String[] months = new DateFormatSymbols(Locale.getDefault()).getMonths();
   System.out.println(months[0]);
   System.out.println(months[11]);

因为这是家庭作业,我会让你弄清楚为什么[0]给 Januaray 和[11]给 December

于 2012-10-01T19:02:31.033 回答
1

你可以用java.util.Date这个:

int month = 3 ; // Input
int year = 2012 ; // Input
Date date = new Date() ;
date.setMonth(month) ;
date.setYear(year) ;

但是由于Date已弃用,因此您必须java.util.Calendar改用。等效函数为:

Calendar.set(Calendar.MONTH, month) ;
Calendar.set(Calendar.YEAR, year) ;
于 2012-10-01T18:51:20.783 回答
1

因为这是作业,我不会把所有的豆子都洒出来。你必须弄清楚其余的。

在不知道您尝试过什么或找到一个月是什么意思的情况下,我认为您想获得一个基于一年和一个月的 Date 对象。

Calendar堂课是一个正确的开始。首先,您应该使用该getInstance()方法获取一个实例,特别考虑该set(int field, int value)方法来设置该日历的年份和月份。

如果您想知道如何知道您正在设置哪个字段,请尝试其Calendar自身定义的不同常量值(按照惯例,这些值以大写字母命名,以便您找到它们)。

最后,您只需要Date通过该getTime()方法获得它。

编辑

遵循Calendar类方法并使用集合,您可以得出您正在搜索的月份。

使用getActualMaximum(int field)with等方法Calendar.DAY_OF_MONTH。这实际上是答案之一。另一个是相似的,我把它留给你。

提示:创建一个日历并使用字段,尝试将月份中的日期设置为 1(第一天),将当前月份设置为您需要从中获取信息的月份。

于 2012-10-01T18:52:45.107 回答
0
import java.util.Calendar;
import java.text.SimpleDateFormat;

class PrintCalendar {
    public static void main(String args[]) {
        Calendar c = Calendar.getInstance();

        int month = 3;
        int year = 2011;

        c.set(year, month, 1); // Set c's time to first day of specified month/year

        // Day of week (by numerical index) can also be obtained programmatically with c.get(Calendar.DAY_OF_WEEK)
        System.out.println("First day of month falls on a " + new SimpleDateFormat("EEEE").format(c.getTime()));
        // "Actual maximum" means the maximum in the current timeframe; that is, it will return 29 for a February in a leap year
        System.out.println("Month has " + c.getActualMaximum(Calendar.DAY_OF_MONTH) + " days");
    }
}
于 2012-10-01T19:56:19.413 回答