使用Calendar模擬一個無界面日歷
阿新 • • 發佈:2019-03-26
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模擬一個無界面日歷