【学习随记】使用Calender类实现简单的可视化日历程序

这篇博客记录了通过Java的Calender类来实现一个简单的可视化日历的步骤,包括如何创建、展示和操作日历。内容涵盖了日期的设置、日历的遍历以及界面显示的实现细节。
摘要由CSDN通过智能技术生成

Calender和GregorianCalendar类的相关知识点(也算是注意事项):
星期是从1开始到7的,月份是从0开始到11的。
calender类中的常用常量:
static int DAY_OF_MONTH get字段编号和 set表示本月的日期。 
static int DAY_OF_WEEK get字段编号和 set表示星期几。 
static int DAY_OF_WEEK_IN_MONTH get和 set字段编号,表示当月的星期几的序数。 
static int DAY_OF_YEAR get字段编号和 set表示 set的日数。
static int YEAR get字段编号和set表示年份。

直接贴代码:
package com.study;

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;

/**
 * 可视化日历程序
 * @author Oliver
 * 功能:
 * Ⅰ,打印出给定的日期与星期关系;
 * Ⅱ,当前日期进行标记。
 * 
 * 实现过程与难点:
 * Ⅰ,输入的字符串解析为SimpleDateFormat实例;
 * Ⅱ,相应JAVA工具包中的星期、月数表达,以及calender类的一些常用方法;
 * Ⅲ,本月一号的星期占位问题————一号本身的占位问题和之前的空白
 *
 */
public class Demo12 {
	static Scanner input=new Scanner(System.in);
	
	public static void main(String[] args) {
		System.out.println("请以年-月-日的格式输入日期:");
		String InputDate=input.nextLine();
		
		DateFormat df =new SimpleDateFormat("yyyy-MM-dd");		
		try {	
			//相应的输入解析(parse)为相应格式的SimpleDateFormat实例
			Date date=df.parse(InputDate);
			System.out.println(date);			
			//Sets this Calendar's time with the given Date.
			Calendar calender =new GregorianCalendar();
			calender.setTime(date);		
			//注意:一周从星期日为1到星期六的7,十二个月则是从0到11
			System.out.println("本月的天数共有"+calender.getActualMaximum(calender.DAY_OF_MONTH));
			//一周从星期日为1到星期六的7,十二个月则是从0到11。所以-1。其中星期天为0
			System.out.println("此日期为星期"+(calender.get(calender.DAY_OF_WEEK)-1));
			//获取给定月数的天数,解决大小、二月区别
			int MaxDay=calender.getActualMaximum(calender.DAY_OF_MONTH);
			//DATE表示该月日期
			int CurrentDay=calender.get(calender.DATE);
			//首先要解决每月第一天的星期占位再通过本月总天数循环打印日历,所以要将日期设置为1号
			calender.set(calender.DATE, 1);
			System.out.println("日\t一\t二\t三\t四\t五\t六");
			//本月第一天之前是空白,通过1号的星期数进行相应的\t操作
			for(int i=1;i<calender.get(calender.DAY_OF_WEEK);i++){
				System.out.print("\t");
			}
			//开始日期打印
			for(int i=1;i<=MaxDay;i++) {
				//给定日期数用*标记
				if(CurrentDay==i) {
					System.out.print("*");
				}
				System.out.print(i+"\t");
				//每逢星期六进行换行
				if((calender.get(calender.DAY_OF_WEEK))==calender.SATURDAY) {
					System.out.println();
				}
				//一日打印完加日期再操作
				calender.add(calender.DATE, 1);
				
			}
			
		} catch (ParseException e) {
			System.out.println("日期输入格式有误!");
			e.printStackTrace();
		}
	}
}

运行效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值