使用Calendar或Date类,打印出当前月的日历表:
提示:
- 先使用Date或Calendar获得这个月的1号是星期几,用来确定1号前需要几个**
- 然后确定这个月的天数,确定需要打印多少个数
a) 可以使用条件判断获得天数
b) 可以借用Calendar类的add方法,时间定为到X年X月的1号,先添加一个月,再减去一天,则时间就定为到X年X月的最后一天,获得这一天是几号则可得这个月的天数。
- 每输出7个内容(包含数字与空格)则需要换行。
- 输入年,月实现输出该月的日历
public static void main(String[] args) throws ParseException { Calendar cal = Calendar.getInstance(); System.out.println("\t\t\t 本月"); System.out.print("\t\t "+cal.get(Calendar.YEAR)+"年\t"); System.out.println((cal.get(Calendar.MONTH)+1)+"月"); cal.set(Calendar.DATE, 1);//将本月日期修改为 MM月1日 Date date1 = cal.getTime();//通过getTime()改为Date类型 /*a是获取date1的星期几 *因为下面操作可能会对date3有影响所以在这里传值 *getDay()返回值是int类型 *星期日返回值是0,星期一返回值是1,以此类推*/ int a = date1.getDate(); cal.add(Calendar.MONTH, 1);//将月份+1,日期变为(MM+1)月1日 cal.set(Calendar.DATE, 0);//此时日期为MM月最后一天 Date date2 = cal.getTime();//当此时的时间改为Date类型,以便后面的show1方法调用 int b = show1(date1,date2);//b是本月的天数 show2(a,b); Scanner scan= new Scanner(System.in); System.out.println("请输入年-月(yyyy-MM)"); String str1 = scan.next(); SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM"); Date date3 = sim.parse(str1); int c = date3.getDay(); cal.set(Calendar.MONTH,(date3.getMonth()+1)); cal.set(Calendar.DATE,0); Date date4 = cal.getTime(); int d = show1(date3,date4); show2(c,d); } public static int show1(Date date1,Date date2) { int a = date2.getDate()-date1.getDate()+1;//求本月时间因为是 最后一天-第一天,所以要+1 return a; } public static void show2(int a,int b) { int date = 0; int sum = 0; System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); /*本月第一天是星期几 * 前面用 * 号代替 * 如果是星期日 a=0 * 星期一 a=1 * 以此类推 * sum代表 * 号输出的个数 */ for(int k = 0; k<a;k++) { System.out.print(" *\t"); sum++; } /*这里的b为本月的天数 * Math.ceil(b/7))+1为输出后的行 */ for (int i = 1; i <= ((int)(Math.ceil(b/7))+1); i++) { /* 中间变量sum的作用:通过以下判断是否为第一行 *不是:sum=0,7-sum=0,每行输出7个日期 *是:没输出一个 * 号 sum+1 7-sum 表示第一行输出日期的个数 */ if(i!=1) { sum=0; } for (int j = 1; j <=(7-sum); j++) { if(date<b) {//date小于本月天数 date+1 date++; if(date<10) {//因为 1与10 不同,1有一个数字 10有1和0两个数字,这里判断的目的是让 1与10中的0对齐 System.out.print(" "+date+"\t"); }else { System.out.print(date+"\t"); } }else {//最后一行不满足7个日期时 多出来的几天输出 * 号 System.out.print(" *"+"\t"); } } System.out.println();//目的是换行 } } }
Java 使用Calendar或Date类,打印出当前月的日历表(新手小白,初次发表)
最新推荐文章于 2023-03-14 01:24:21 发布