【Java】获取月历及相关信息
需求
输入日期,获取:
- 该月第一天为周几
- 该月总共有多少天
- 该月月历
效果
代码
package com.cxl.demo18_Date;
import java.util.Calendar;
import java.util.Scanner;
public class DateDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入日期(如2022-10-12):");
String date = sc.nextLine();
System.out.println("输入的日期为:"+date);
//获取年、月、日各自的数字
String[] datestr = date.split("-");
int year = Integer.parseInt(datestr[0]);
int month = Integer.parseInt(datestr[1])-1; //Java月份从0开始计数,故Java中第i个月份应为实际的i-1月
int day = Integer.parseInt(datestr[2]);
Calendar calendar = Calendar.getInstance();
calendar.set(year,month,1);
int alldays = calendar.getActualMaximum(Calendar.DATE); //获得该月的总天数
//该月第一天是周几,与月份同理-1
int weekDay = calendar.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("所输入的月份的第一天是周"+weekDay);
System.out.println("该月份共有"+alldays+"天");
System.out.println("当月月历如下");
System.out.println("日\t一\t二\t三\t四\t五\t六");
//月历
int m;
for (m = 1;m <= weekDay;m++) //若该处位置在该月第一天之前,则置为空
System.out.print(" "+"\t");
for (int i = 1; i < alldays; i++) {
if (i == day)
System.out.print("#"); //将该天数在月历的表示中,附加#标志
System.out.print(i+"\t");
if ((i + weekDay) % 7 == 0) //每7天换行输出
System.out.println();
}
}
}