今天学到了一个技能,就是在控制台输入一个日期,可以返回一个本月的日历,也即所谓的打印日历:(具体的实现代码如下,文中注释已经很详细了就不多说什么了):
//打印日历:根据你所给定的日期打印出本月的日历显示
import java.sql.Date;
import java.util.Calendar;
import java.util.Scanner;
public class PrintCalendar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要查找的日期:(2016-3-4)");
String date = sc.next();
//将输入的字符串转换成Date类型的变量
Date d = Date.valueOf(date);
//创建一个日历类对象
Calendar cal = Calendar.getInstance();
//将日历类对象的日期设置为输入的日期,即获取Date类变量的值,这里用到Calendar类的settime()方法
cal.setTime(d);
//此时可以打印看一下是否日期已经改变
// System.out.println(cal);//值肯定变了,不信你们可以亲自尝试
//先进行当前日期的获取
int nowDay = cal.get(Calendar.DATE);
// System.out.println(nowDay);
//获取本月的天数
int day = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// System.out.println(day);
//获取每月1号是星期几,然后得在前面输出空格
cal.set(Calendar.DATE, 1);
int kongGeNum = cal.get(Calendar.DAY_OF_WEEK)-1;
//先输出日历上面的日一二三四五六
System.out.println("日\t一\t二\t三\t四\t五\t六\t");
//定义一个计数器
int count = 0;
//输出空格:
for(int m=0;m<kongGeNum;m++){
System.out.print("\t");
}
//此时的计数器就已经需要加上空格的数了
count += kongGeNum;
//输出的日历
for(int i=1;i<=day;i++){
//如果和所输入的日期一样则加上*否则不加
if(i == nowDay){
System.out.print(i+"*\t");
}else{
System.out.print(i+"\t");
}
//只要输出一个,则count++
count++;
//判断count是否是7 的整数倍,如果是则换行
if(count % 7 == 0){
System.out.println();
}
}
}
}