**任务要求:**在这里我们实现一个可以查看任意日期的日历
**任务分析:**首先,我们要考虑将输入的字符串转化为日期格式,并将输入的日期设置为“当前日期”;其次,我们要找到每个月一号是星期几,这样才能在这个月份中进行排序。
运行结果:
程序代码:
package test10_25;
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 test1_3b {
public static void main(String[] args) throws ParseException
{
System.out.println("请输入一个日期:yyyy-MM-dd");//输出提示信息
Scanner reader = new Scanner(System.in);
String str=reader.nextLine();//读入信息
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(str); //将字符串转化为指定的日期格式
Calendar cal = new GregorianCalendar();
cal.setTime(date); //将输入日期设置为当前日期
int day_m=cal.get(Calendar.DATE);//得到当前日期是这个月的哪一天
cal.set(Calendar.DATE, 1);
int first_day =cal.get(Calendar.DAY_OF_WEEK);
int final_day=cal.getActualMaximum(Calendar.DAY_OF_MONTH);//获取月份最后一天
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i =1;i<first_day;i++) {
System.out.print("\t");
}
for(int i=1;i<=final_day;i++) {
System.out.print(i);
if(i==day_m) {
System.out.print("*");
}
System.out.print("\t");
if((i-(8-first_day))%7 == 0) {//7天为一个循环 输出所有的数
System.out.println("\n");
}
}
}
}