欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA学习-控制台打印日历功能的实现

程序员文章站 2022-05-07 21:55:04
...

日历打印主要应用知识点:

String到时间类(Date)的转换

String转换为Date类主要是通过类DateFormat实现,由于DateForam是一个抽象类,创建对象时必须使用其实现类SimpleDateFormat

使用DateFormat类中的parse()对字符串进行操作最终返回一个Date数据。其中,String型数值,必须要与格式化字符串“yyyy-MM-dd”所规定的格式一致,否则会报错。

并且在导入Date的包时,需要导入java.util.Date包,而非java.sql.Date包。

    DateFormat date_f = new SimpleDateFormat("yyyy-MM-dd");
    Date date = date_f.parse(str_date);

Calendar类的相关操作

Calendar的对象是针对日期进行操作,多用于日期的计算与展示。

//获取当前日期的年份
	int year = calendar.get(Calendar.YEAR);
	System.out.println(year);

如:月份,日期,星期几等都只需要替换相应的常量

 calender.getTime(); 将获取到时间,输出效果同Date型数据

calender.add(YEAR,1);  将当前日期增加1年,其他操作同get()方法


控制台打印日历: 

package test01;

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;

public class RiLi {
	public static void main(String[] args) throws ParseException {
		//1——从控制台依照要求输入一个字符串日期
		System.out.println("请输入一个日期,格式如下:(2020-3-12)");
		Scanner scanner = new Scanner(System.in);
		String str_date = scanner.nextLine();
		//2——将字符串——>时间类(Date)——>日历类
		DateFormat date_f = new SimpleDateFormat("yyyy-MM-dd");
		Date date = date_f.parse(str_date);
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		//3——获取当前日期中的日属性值
		int current_date = calendar.get(calendar.DATE);
		//4——将日期中的日属性值设置为1号,也可以用DAY_OF_MONTH
		calendar.set(Calendar.DATE, 1);
		
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		//5——获取本月总天数值
		int max_Month_Day = calendar.getActualMaximum(Calendar.DATE);
		//6——获取本月的1号是周几,返回值:1-7,1表示周日,7表示周六
		int week_day = calendar.get(Calendar.DAY_OF_WEEK);
		//7——显示出1号之前空闲空间
		for (int i = 0; i < week_day; i++) {
			System.out.print("\t");
		}
		//8——打印本月的所有天数
		for (int i = 1; i <= max_Month_Day; i++) {
			//计算今天的日期是本周的周几,如果是周六,则换行
			if (calendar.get(Calendar.DAY_OF_WEEK) == 7) {
				System.out.println();
			}
			//如果当前即将被打印的日期与输入的日期一致,则输出
			if (calendar.get(Calendar.DATE) == current_date) {
				System.err.print(calendar.get(Calendar.DATE) + "\t");
			}
			//循环输出其他日期时间
			else {
				System.out.print(calendar.get(Calendar.DATE) + "\t");
			}
			//每次循环,日期加一天
			calendar.add(Calendar.DATE, 1);
		}
	}

}