输入年月,输出该月份的日历页:
import java.util.Calendar;//导入Calendar类
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Calendar calendar = Calendar.getInstance();//getInstance获取当前日期
int y = input.nextInt(), m = input.nextInt()-1;
calendar.set(y,m,1);//设置日期,默认为当月第一天
int cnt = calendar.get(Calendar.DAY_OF_WEEK)-1;//返回设置的日期是当周的星期几
for (int i = 0; i < cnt; i++) {
System.out.printf(" ");
}
while(calendar.get(Calendar.MONTH) == m) {
System.out.printf("%5d",calendar.get(Calendar.DAY_OF_MONTH));//输出是当个月的哪天
cnt++;
if(cnt%7==0) System.out.println();
calendar.add(Calendar.DATE,1);//对日期加一天
}
}
}
在获取月份时,Calendar.MONTH + 1 的原因
Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。
在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因
Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。
有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。