如何制作日历表
首先要明白 Date类,DateFormat类,Calendar类分别是干什么的,它们有什么方法,可以实现什么功能,只有明白了这些,才能够制作一个日历表
Date类:setTime(long date) ,使用给定的毫秒时间值设置现有的 Date对象。
Date类大多方法已经弃用了,常用的就是这个,一般用他的子类DateFormat较多
Dateformat类:可以实现字符串和时间对象的转化,格式化这个变量
有format()和parse()方法是常用的;
Calendar类:现在有关日期计算大多用这个类的方法
setTime()和getTime()常用,还有使用Calendar的子类对象调用一些常用的方法
下面是我今天做的一个简易的日历表,
package AK.homeWork;
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 testcalen {
public static void main(String[] args) {
Scanner inScanner =new Scanner(System.in);
System.out.println("请输入日期:");
String string=inScanner.nextLine();
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");//建一个DateFormat对象格式化输入年月日
Date date;
try {
date = dateFormat.parse(string);//将一个字符串格式化为一个时间对象
Calendar calendar=new GregorianCalendar();//建一个日历对象Calendar
calendar.setTime(date); //调用setTime()方法,将时间对象带进去
int s=calendar.get(Calendar.DATE);//提前得到设置的日期保存在s中
calendar.set(Calendar.DATE,1); //设置日期为一号
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//输出这个一号是星期几
System.out.println(calendar.getActualMaximum(Calendar.DATE));//输出这个月最大的天数
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<calendar.get(Calendar.DAY_OF_WEEK);i++) {
System.out.print('\t'); //看一号是周几,然后比这个这个周几小的全部空格代替
}
for(int i=1;i<=calendar.getActualMaximum(Calendar.DATE);i++) {
if(s==i) { //当预存的日期和输出的日期相等时
System.out.print("*"); //在当日上面有*号
}
System.out.print(i+"\t"); //输出几号并空格隔开
if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
System.out.print('\n'); //当得到的日期为周六时换行
}
calendar.add(Calendar.DATE,1); //每循环完一次,日期就加一
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
上面都有注释,关于我自己的见解,有不对的地方欢迎大家指出来共同学习。