学习了Date以及Calendar不少朋友还有些疑惑,下面通过一个月历程序让大家有更深的理解,希望能够帮助到大家。
如果我写的不好或者有需要改进的地方,欢迎广大朋友在评论区留言,我看到都会一一回复。
程序描述:输入一个月份打印出这个月份的日历
代码如下:
package com.etc.work;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
//实现打印出某月的一个日历
public class Test2 {
//关键是要得出这个月的第一天是星期几,以及这个月一共有几天
public static void main(String[] args) throws ParseException {
System.out.print("请输入日期(建议格式如2018-03):");
Scanner sc = new Scanner(System.in);
String input_Date=sc.next();
SimpleDateFormat simp=new SimpleDateFormat("yyyy-MM");
//字符串转换Date
Date date=simp.parse(input_Date); //默认1号 0时
Calendar newDate=Calendar.getInstance();
newDate.setTime(date);
int week=newDate.get(Calendar.DAY_OF_WEEK)-1; //得出该月的第一天是星期几
int day=newDate.getActualMaximum(Calendar.DATE); //得出该月一共有几天
System.out.println("该月份日历如下:");
System.out.println("日 一 二 三 四 五 六");
for(int a=1;a<=week;a++) {
System.out.print(" ");
}
for(int i=1;i<=day;i++) {
System.out.print(i);
if(i<10) {
System.out.print(" "); //因为十位数比个位数多一个空格的占用间隔,个位数打印6个空格,十位数打印5个空格。
}else {
System.out.print(" ");
}
week++;
if(week==7) { //如果一个星期满了就换行输出
System.out.print("\n");
week=0;
}
}
}
}
其中涉及到了Date转化为Calendar,原因是因为Calendar提供了一些方法,比较好操作。
运行结果如图: