今天我们来用java做一个万年历
分析:
看到这个效果图,首先我们要看我们会的地方,从我们会的地方开始
1.第一句是一串文字我们直接打印输出就可以了,这里要用一个键盘录入
2.第二步我们要做的是把我们的日期用for循环表示出来
3.第三步我们需要调整格式,首先分析这个输入的日期,我们要把输入的String类型首先转换成日期的类型,然后再把日期的类型转化为格林时间,目的是为了我们获取具体的时间
4.我们需要把判断设置当前月的一号是星期几,进行get数据,然后就知道日历前面需要空几个空格,根据月份判断每月的天数,根据具体哪天标记*
以下是完整代码:
package cn.sxs.test;
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 Test004 {
public static void main(String[] args) throws ParseException {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个日期:yyyy-MM-dd");
String str=input.next();
//创建DateFormat对象用于将String转化为时间对象
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Date d =df.parse(str);
//将Date对象所表示的时间设置Calendar中
Calendar cal = new GregorianCalendar();
cal.setTime(d);
//获取输入的日期中的date部分
int nowDate=cal.get(Calendar.DAY_OF_MONTH);
//设置将日期设置为1号
cal.set(Calendar.DAY_OF_MONTH,1);
//获取一号是星期几
int dayOfWeek =cal.get(Calendar.DAY_OF_WEEK);
System.out.println("日t一t二t三t四t五t六");
for(int i =1;i<dayOfWeek;i++) {
System.out.print("t");
}
//获取月份最后一天
int maxDay=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=1;i<=maxDay;i++) {
System.out.print(i);
if(i==nowDate) {
System.out.print("*");
}
System.out.print("t");
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
System.out.println();
}
cal.add(Calendar.DAY_OF_MONTH, 1);
}
}
}