使用Calendar模拟一个无界面日历
获得当前时间的对象是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:506889268@qq.com