java学习笔记之可视化日历(Date类)2019/4/27

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();
		}	
	}	
}

结果截图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42373946/article/details/89597979