java学习笔记之可视化日历(Date类)
需求:编写一个可视化日历程序,查询的日期做个标记与其他日期区分开来即可
思想:见代码注释
涉及函数:
代码:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
import javax.swing.text.SimpleAttributeSet;
public class VisualCalendar {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("输入日期:(格式:2019-8-7)");
Scanner scanner=new Scanner(System.in);
String inputdate=scanner.nextLine();//获取键盘输入
DateFormat format=new SimpleDateFormat("yyyy-MM-dd");//设置输入的格式
System.out.println("日\t一\t二\t三\t四\t五\t六");
try {
Date result_date=format.parse(inputdate);//把日期字符串转换为时间格式
Calendar calendar=new GregorianCalendar();//转为格林尼治时间,以便于做计算
calendar.setTime(result_date);//设置时间
int day=(calendar.get(Calendar.DATE));//获取输入的日期是当月的第几天
calendar.set(Calendar.DATE, 1);//把日期设置为一号
int day_of_week=(calendar.get(Calendar.DAY_OF_WEEK));//获取当前月份的第一天是周几
int max_day=(calendar.getActualMaximum(Calendar.DATE));//获取当月最大天数
int count=0;//换行计数器,每七个换行
for(int j=1;j<day_of_week;j++)//如果是当月的第N天,那么前N天要空着
{
System.out.print("\t");
count++;
if(count%7==0)//每隔7天换行
System.out.println();
}
for(int i=1;i<=max_day;i++)
{
if(i==day)//如果i=输入日期的天数,那么打印个标记和其他日期区别
System.out.print("*"+i+"\t");
else
System.out.print(i+"\t");
count++;
if(count%7==0)
System.out.println();
}
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
结果截图: