使用java的Calendar类实现日历(输入一个年份和月份,按格式输出此月份的日历)

使用java的Calendar类实现输入指定的年和月的日历

题目:
输入一个年份和月份,按格式输出此月份的日历

在这里插入图片描述
1.先获得calendar对象,由于Calender是抽象类,所以只能通过他的Calendar.getInstance()方法来获取他的子类对象。

Calendar calendar = Calendar.getInstance();

2.设置时间。用到Calendar.set()方法来设置.

//设置传入的时间,year和manth是我写的函数传入的值
  calendar.set(year, month, 1);

3.先打印日历上面的星期。

System.out.println("一  二 三  四 五  六 七");

4.获取本月份可能会拥有的最大天数,和传入的那第一天是周几

//获取输入的这个月可能拥有的最大天数
int monthDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//获取星期几
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);

5.获取到的星期的格式是周天是1。

//这里的星期天是1所以我把星期天改成7,获取到其他几天全部减一
   weekDay = weekDay - 1;
    if (weekDay == 0){
        weekDay = 7;
    }

6.打印每个月前面一天前面的空格。

//每个月第一天前面的空格打印
   for (int j = 0; j<weekDay*3-3;j++){
       System.out.print(" ");
   }

7.打印日历。

 //计数 打印7个换一行 从获取的星期开始
        int s=weekDay;

        //循环打印这个月的日历
        for (int i = 1;i <= monthDay;i++){
            //如果天数小于1就在它前面打印空格,否则打印会乱
            if(i<10){
                System.out.print(" ");
            }
            System.out.print(i+" ");

            //当打印到周天了就打印一个换行符,并且复制为0重新加
            if(weekDay == 7){
                System.out.println();
                weekDay=0;
            }
            weekDay++;

        }

接下来是全部的代码:

package com.etime01;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.Scanner;


public class writeCalendar {
    public static void main(String[] args) throws ParseException {
        writeCelendar(2023, 1);
    }


    private static void writeCelendar(int year,int month){
        System.out.println("输入的年份:"+year+"年");
        System.out.println("输入的月份:"+month+"月");
        //月份从零开始十一结束
        month=month-1;

        Calendar calendar = Calendar.getInstance();
        //设置传入的时间,year和manth是我写的函数传入的值
        calendar.set(year, month, 1);

        //将输入的时间格式化输出
        String string = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(string, Locale.getDefault());
        System.out.println(" "+simpleDateFormat.format(calendar.getTime()));

        //日历上面的星期
        System.out.println("一  二 三  四 五  六 七");

        //获取输入的这个月可能拥有的最大天数
        int monthDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        //获取星期几
        int weekDay = calendar.get(Calendar.DAY_OF_WEEK);

        //这里的星期天是1所以我把星期天改成7
        weekDay = weekDay - 1;
        if (weekDay == 0){
            weekDay = 7;
        }

        //每个月第一天前面的空格打印
        for (int j = 0; j<weekDay*3-3;j++){
            System.out.print(" ");
        }

        //计数 打印7个换一行 从获取的星期开始
        int s=weekDay;

        //循环打印这个月的日历
        for (int i = 1;i <= monthDay;i++){
            //如果天数小于1就在它前面打印空格,否则打印会乱
            if(i<10){
                System.out.print(" ");
            }
            System.out.print(i+" ");

            //当打印到周天了就打印一个换行符,并且复制为0重新加
            if(weekDay == 7){
                System.out.println();
                weekDay=0;
            }
            weekDay++;

        }
    }
}


输入2020年 2月份
输出结果:

在这里插入图片描述

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值