使用Calendar模拟一个无界面日历
使用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;
}
}
}
}
复制代码
复制代码
写的不好请指教,后期会将其界面化,也会往界面中添加入时钟和闹钟,敬请期待!