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();
}
}
}
运行效果: