Java工具類之根據指定日期獲取當月日曆(包含星期)

直接上代碼

package com.csdn.soinice.util;

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

/**
 * 根據指定日期獲取當月日曆
 * <p>
 * 輸出一份當前所在時區當前時間的一個月的日曆(1號到28/29/30/31號,以及每天對應爲星期幾)。
 * 思路:
 * (1)獲得這一年是否是閏年。閏年的2月只有28天,非閏年2月有29天。其他1、3、5、7、8、10、12月每月31天,2、4、6、9、11每月30天。
 * (2)根據上一步獲得這個月的總天數。
 * (3)獲得這個月第一天是星期幾。然後依次填充。直到這個月最後一天。
 *
 * @author imenger
 * @date 2020/3/24 10:40 上午
 */
public class MyCalendar {
    public static void main(String[] args) throws ParseException {
        int maxDay = 0;
        int firstDay = 0;
        int currentDay = 0;

        System.out.println("請輸入一個日期:格式爲:2020-02-02");
        Scanner sc = new Scanner(System.in);
        // 鍵盤輸入日期格式的字符串
        String str = sc.nextLine();

        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        // 將字符串轉化爲指定的日期格式
        Date date = format.parse(str);

        Calendar calendar = new GregorianCalendar();
        // 將日期轉化爲日曆
        calendar.setTime(date);
        // 當前日期中當前月對應的最大天數
        maxDay = calendar.getActualMaximum(Calendar.DATE);
        // 當前日期中的當前天
        currentDay = calendar.get(Calendar.DATE);
        // 設置爲當前月的第一天
        calendar.set(Calendar.DATE, 1);
        // 當前日期中當前月第一天對應的星期數
        firstDay = calendar.get(Calendar.DAY_OF_WEEK);

        System.out.println("--------------------------------");
        System.out.println("週日\t週一\t週二\t週三\t週四\t週五\t週六");
        System.out.println("--------------------------------");
        // 當前月第一天之前以空格輸出
        for (int j = 1; j < firstDay; j++) {
            System.out.print("\t");
        }
        // 輸出當月每一天的號數
        for (int i = 1; i <= maxDay; i++) {
            // 以*i表示當天日期
            if (i == currentDay) {
                System.out.print("*");
            }
            System.out.print(i + "\t");
            // 以七天爲一個循環輸出所有天數
            if ((i - (8 - firstDay)) % 7 == 0) {
                System.out.println("\n");
            }
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章