美文网首页
Calendar & Date & SimpleDateForm

Calendar & Date & SimpleDateForm

作者: 大红豆小薏米 | 来源:发表于2020-04-24 09:21 被阅读0次

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


image.png
package chapter4.day01;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年:");
        int year = sc.nextInt();
        System.out.println("请输入月:");
        int month = sc.nextInt()-1;
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate = df.parse("2016-01-01");

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);

        calendar.set(Calendar.DAY_OF_MONTH, 1);
        int weekStart = calendar.get(Calendar.DAY_OF_WEEK);

        System.out.println("日\t\t一\t\t二\t\t三\t\t四\t\t五\t\t六");
        for (int i=1;i<weekStart;i++){
            System.out.printf("%-8s","");
        }

        int countRelax = 0;
        int countWeekend = 0;
        int maxDate = calendar.getActualMaximum(Calendar.DATE);
        for (int i=1;i<= maxDate;i++){
            calendar.set(Calendar.DAY_OF_MONTH, i);
            Date temp = calendar.getTime();
            int gap = getGapDay(startDate, temp);
            if (gap%4==1){
                System.out.printf("%-8s","["+calendar.get(Calendar.DAY_OF_MONTH)+"]");
                countRelax++;
                if (calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
                    countWeekend++;
                }
            }else {
                System.out.printf("%-8s", calendar.get(Calendar.DAY_OF_MONTH));
            }

            if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
                System.out.println();
            }
            calendar.add(Calendar.DAY_OF_MONTH,1);
        }
        System.out.println("本月休息的天数有:"+countRelax);
        System.out.println("本月轮到周末休息的天数有:"+countWeekend);

    }

    private static int getGapDay(Date from, Date to){
        long fromTime = from.getTime();
        long toTime = to.getTime();
        int days = (int) ((toTime - fromTime) / (1000 * 60 * 60 * 24));
        return days;
    }
}

相关文章

网友评论

      本文标题:Calendar & Date & SimpleDateForm

      本文链接:https://www.haomeiwen.com/subject/yjlxwhtx.html