使用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月份
输出结果: