运用Date时间类及Calendar日历类实现能够查找休息日的日历

本文介绍如何使用Java的Date和Calendar类来查找特定月份的休息日。通过输入年份和月份,程序能标记出休息日,并统计休息日总数及周末休息天数。示例代码展示了具体的实现逻辑。
摘要由CSDN通过智能技术生成

需求:找到休息日

某林业工人孙工,作息规律为上三天班,休息一天,经常不确定休息日是否是周末。为此,请你开发一个程序,当孙工 输入年以及月,以日历方式显示对应月份的休息日,用中括号进行标记(可以查看以前的休息情况和将来的休息情 况)。同时,统计出本月有几天休息,轮到周末休息有几天。(注:首次休息日是2020年2月1日)
在这里插入图片描述

业务逻辑代码:

public class Demo {
/*
 * 找到休息日
 */
	@SuppressWarnings("resource")
	public static void main(String[] args) throws ParseException {
		Scanner input = new Scanner(System.in);
		SimpleDateFormat f = new SimpleDateFormat("yyyy年MM月dd日");
		Date data1 = new Date();
		Date data2 = new Date();
		Calendar c1 =Calendar.getInstance();
		System.out.print("请输入年:");
		int year = input.nextInt();
		System.out.print("请输入月:");
		int month = input.nextInt();
		data1 = f.parse(year+"年"+month+"月"+"01日");
		c1.setTime(data1);
		data2 = f.parse("2020年02月01日");//首次休息日
		System.out.println("星期日	星期一	星期二	星期三	星期四	星期五	星期六");
		int restDay = 0;//休息天数
		int weekendRestDay = 0;//周末休息天数
		long time = data2.getTime();
		for(int i=1;i<=c1.getActualMaximum(Calendar.DAY_OF_MONTH);i++) {
			if(i==1) {
				switch(c1.get(Calendar.DAY_OF_WEEK)) {
					case 2:
						System.out.print("\t");
						break;
					case 3:
						System.out.print("\t\t");
						break;
					case 4:
						System.out.print("\t\t\t");
						break;
					case 5:
						System.out.print("\t\t\t\t");
						break;
					case 6:
						System.out.print("\t\t\t\t\t");
						break;
					case 7:
						System.out.print("\t\t\t\t\t\t");
						break;
				}
			}
				c1.set(Calendar.DAY_OF_MONTH,i);
				if((c1.getTime().getTime()-time)%(4*24*60*60*1000)==0) {
					System.out.print("["+i+"]"+"\t");
					restDay++;
					if(c1.get(Calendar.DAY_OF_WEEK)==7 || c1.get(Calendar.DAY_OF_WEEK)==1) {
						weekendRestDay++;
					}
				}else {
					System.out.print(i+"\t");
				}
				if(c1.get(Calendar.DAY_OF_WEEK)==7) {
					System.out.println();
				}
		}
		System.out.println();
		System.out.println("本月休息天数有:"+restDay+"天");
		System.out.println("本月轮到周末休息天数是"+weekendRestDay+"天");
	}
}

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值