学习了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提供了一些方法,比较好操作。
运行结果如图: