分享一个自己学习日期类的小案例,根据输入的日期,生成日历。
主要是Calendar、String、Date之间的互相转换
先看一下运行效果,自己输入一个指定的日期,会在控制台打印一个日历,和官方的日历是一样的。
话不多说,直接上源码:
import java.util.Calendar;
import java.util.Scanner;
//根据输入的日期,打印日历
public class CalendarTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要查看的日期:(提示:请按照1999-11-26的日期格式)");
String strDate = sc.next();
//String ---> Calendar要下面两步:
//String ---> Date
java.sql.Date date = java.sql.Date.valueOf(strDate);
//Date ---> Calendar
//getInstance()获取使用默认时区和区域设置的日历。 返回一个Calendar对象
Calendar cal = Calendar.getInstance();
cal.setTime(date);//通过传入的Date值设置Calendar的时间
System.out.println("日\t一\t二\t三\t四\t五\t六");//星期提示
//获取本月最大的天数
int maxDay = cal.getActualMaximum(Calendar.DATE);
int count = 0;
int day = cal.get(Calendar.DATE);//获取当前日期的日
cal.set(Calendar.DATE,1);//讲日期调为本月的1号
int numDay = cal.get(Calendar.DAY_OF_WEEK);//获取这个1号时本周的第几天
int kongDay = numDay - 1;//日历第一行前面空出来的天数
for (int i = 1; i <= kongDay; i++) {
System.out.print("\t");
}
count = count+kongDay;
for (int i = 1; i <= maxDay ; i++) {
if (i==day){
System.out.print(i+"*"+"\t");
}else {
System.out.print(i+"\t");
}
count++;
if (count % 7 == 0){
System.out.println();
}
}
}
}
第一次看可能会有一点蒙,试着跟着思路多去敲几次,慢慢的就可以知道为什么是这样的,一定多敲,不说把键盘敲烂那么夸赞,至少熟能生巧是真的!
快来一起收藏了练习吧~