1. 程式人生 > >使用Calendar模擬一個無界面日歷

使用Calendar模擬一個無界面日歷

tool put toolbar 等等 代碼 util 時間 compile img

獲得當前時間的對象是Date,但是一些方法例如getYear(),getMonth()等等已經被Calendar的Calendar.YEAR,Calendar.MONTH所取代

使用Calendar可以獲得當前的日歷對象

Calendar calendar=Calendar.getInstance();//獲得當前的日歷對象

可以使用其方法重新設置calendar指向的對象

calendar.set(Calendar.DAY_OF_MONTH, 1);//set(對象的屬性,想要修改的目的值)可以任意的修改

calendar.get(Calendar.DAY_OF_WEEK);//獲得今天是周幾,必須calendar有指向特定的對象才可以使用

calendar.get(Calendar.DATE);//獲得今天是幾號

calendar.getActualMaximum(Calendar.DATE);//獲得這個月實際有多少天,getActualMaximum(對象)返回的是改日歷端的最大值,對象是月份的話要加1,因為一月對應的是0,該方返回的是(0-11)的整數

Calendar.DAY_OF_WEEK;//獲得今天是周幾

技術分享圖片
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class visibelCalendar {

    public static void main(String[] args) {
        input();
        
    }
    public static void getMessage(String destDate) {
        DateFormat dest=new SimpleDateFormat("yyyy-MM-dd");
        
        Date d = null;
        try {
            d = dest.parse(destDate);
            
            System.out.println(d);
        } catch (ParseException e) {
            
            System.out.println("無法解析這個日期,請檢查輸入是否正確");
        }
        Calendar calendar=Calendar.getInstance();//該方法獲得當前地區的日歷

        calendar.setTime(d);//將時間日歷指向我們的目的對象
        calendar.set(Calendar.DAY_OF_MONTH, 1);//將日歷指向這個月的第一天,目的是為了獲取1號是星期幾
        int first=calendar.get(Calendar.DAY_OF_WEEK);//獲得今天是周幾,日期指向了這個月的第一天
        //System.out.println(Calendar.DATE);
        calendar.setTime(d);
        int day=calendar.get(Calendar.DATE);//獲得今天是幾號
        int max=calendar.getActualMaximum(Calendar.DATE);//獲得這個月實際有多少天
        //System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//獲得今天是周幾
        builder(max,first,day);
        
    
    }
    public static void input() {
        Scanner sc=new Scanner(System.in);
        Pattern p=Pattern.compile("\\d{4}-\\d{1,2}-\\d{1,2}");
        String destDate="";
        System.out.println("請輸入一個日期:(按照格式:2019-3-24)");
        while(true) {
            destDate=sc.nextLine();
            Matcher m=p.matcher(destDate);
            if(m.matches()) {
                break;
            }
            else {
                System.out.println("輸入的格式不對,請重新輸入(按照格式:2019-3-24):");
            }
        }
        getMessage(destDate);
        
    }
    public static void builder(int max,int first,int day) {
        System.out.print("日\t一\t二\t三\t四\t五\t六\n");
        for(int i=1;i<=first-1;i++) {
            System.out.print("\t");
        }
        int count=first-1;
        for(int i=1;i<=max;i++) {
            if(i==day){
                System.out.print("*");
            }
            System.out.print(i+"\t");
            count++;
            if(count==7) {
                System.out.println();
                count=0;
            }
        }
    }
}
技術分享圖片

寫的不好請指教,後期會將其界面化,也會往界面中添加入時鐘和鬧鐘,敬請期待!

author:天晴月明

edit:eclipse

email:[email protected]

使用Calendar模擬一個無界面日歷