我有涉及用户输入 2 个整数(月份和年份)的作业,我想知道如何做到这一点,我在日历类文档中进行了一些搜索,但没有找到我要搜索的内容。我要做的主要事情是打印一个日历,就像 Windows 中的日历一样,我从用户那里得到的唯一输入是月份和年份的数字,我需要找到一种方法来查找月份是 31 的天气、30、29 或 28 天以及该月的开始日期。 http://lifehacker.com/assets/2006/06/vista-windows-calendar.jpg这是我想做的,但作为文本而不打印其他月份的日子。
4 回答
看看DateFormatSymbols。这具有检索月份的方法。然后您可以使用数组中的索引位置(月份号)来获取月份
String[] months = new DateFormatSymbols(Locale.getDefault()).getMonths();
System.out.println(months[0]);
System.out.println(months[11]);
因为这是家庭作业,我会让你弄清楚为什么[0]
给 Januaray 和[11]
给 December
你可以用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) ;
因为这是作业,我不会把所有的豆子都洒出来。你必须弄清楚其余的。
在不知道您尝试过什么或找到一个月是什么意思的情况下,我认为您想获得一个基于一年和一个月的 Date 对象。
这Calendar
堂课是一个正确的开始。首先,您应该使用该getInstance()
方法获取一个实例,特别考虑该set(int field, int value)
方法来设置该日历的年份和月份。
如果您想知道如何知道您正在设置哪个字段,请尝试其Calendar
自身定义的不同常量值(按照惯例,这些值以大写字母命名,以便您找到它们)。
最后,您只需要Date
通过该getTime()
方法获得它。
编辑
遵循Calendar
类方法并使用集合,您可以得出您正在搜索的月份。
使用getActualMaximum(int field)
with等方法Calendar.DAY_OF_MONTH
。这实际上是答案之一。另一个是相似的,我把它留给你。
提示:创建一个日历并使用字段,尝试将月份中的日期设置为 1(第一天),将当前月份设置为您需要从中获取信息的月份。
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");
}
}