Java 使用Calendar类输出指定年份和月份的日历 您所在的位置:网站首页 怎么打印年历 Java 使用Calendar类输出指定年份和月份的日历

Java 使用Calendar类输出指定年份和月份的日历

2023-10-24 05:55| 来源: 网络整理| 查看: 265

题目

题目另可表述为: 1.输入一个年份和月份,按格式输出此月份的日历 2.以如下格式输出一个月份的日历 在这里插入图片描述

代码实现 1.Calendar类的一些说明

Calendar类是一个抽象类,不能通过new的方式来获得实例,可以使用类方法getInstance()返回一个Calendar的子类对象.

Calendar calendar = Calendar.getInstance();

Calendar类的操作需要首先设定日期:

calendar.set(year, month - 1, day);

由于Java中月份从0月开始计数,所以真实月份12月(month=12) 需要减1 才是Java中的12月

在输出日历时,只需要关注本月第一天是星期几即可,例如图中 2015年8月1日对应星期六. 在这里插入图片描述 这里使用方法

int startDay=calendar.get(Calendar.DAY_OF_WEEK);

得到startDay=7.说明2015年8月1日是本周的第7天. Java中规定了每周第一天是星期日,所以星期日=1,星期一=2…星期六=7

2.天数的判断

月份有大小月之分,其中大月31天,小月30天,特殊的2月有28天.闰年2月有29天.

public static int maxDayInMonth(int year, int month) { int max = 30; if (month == 1 | month == 3 | month == 5 | month == 7 | month == 8 | month == 10 | month == 12) max = 31; else if (month == 2) max = 28; else if (month == 2 & (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) max = 29; return max; } 3.空格补全

在这里插入图片描述 如果第一天是星期六, 需要将第一周的前6天用空格补全,代表前6天来自于9月份的25-30日.

public static void fillSpace(int startDay) { for (int i = 1; i int year = 2015; int month = 8; //input Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, 1); int startDay = calendar.get(Calendar.DAY_OF_WEEK); //求本周第一天是星期几 int count = startDay - 1; //第一周的初始计数 int maxDay = maxDayInMonth(year, month); System.out.println("Sun Mon Tue Wed Thu Fri Sat"); fillSpace(startDay); for (int i = 1; i //每输出7天换一次行 count = 0; System.out.print('\n'); } } } 完整代码 import java.util.Calendar; public class LittleCode_3 { public static void printCalender() { int year = 2015; int month = 8; //input Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, 1); int startDay = calendar.get(Calendar.DAY_OF_WEEK); //求本周第一天是星期几 int count = startDay - 1; //第一周的初始计数 int maxDay = maxDayInMonth(year, month); System.out.println("Sun Mon Tue Wed Thu Fri Sat"); fillSpace(startDay); for (int i = 1; i //每输出7天换一次行 count = 0; System.out.print('\n'); } } } public static void fillSpace(int startDay) { for (int i = 1; i int max = 30; if (month == 1 | month == 3 | month == 5 | month == 7 | month == 8 | month == 10 | month == 12) max = 31; else if (month == 2) max = 28; else if (month == 2 & (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) max = 29; return max; } public static void main(String[] args) { printCalender(); } } 输出结果

输入year=2015 month=8 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有