一、Calendar
1.Calendar是抽象类 单例的设计模式
//单例模式 获取实例 Calendar calendar = Calendar.getInstance(); //获取某一年一共多少天 可以用来判断闰年 366天 int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR); //获取某一年的2月有多少天 //可以先将日期设置到那年的3月1日,然后利用add()往前偏移一天 calendar.set(2000,2,1);//月份从0-11 calendar.add(Calendar.DAY_OF_MONTH,-1);//3月1日往前偏移一天
2.Calendar打印万年历(小练习)
int year,month ; Scanner scanner = new Scanner(System.in); while(true) { System.out.println("请输入1900年之后的年份 如: 2018"); year = scanner.nextInt(); if(year<1900||year>9999) { System.out.println("年份输入有误,请重新输入"); continue; } scanner.nextLine(); System.out.println("请输入1-12的月份 如:10"); month = scanner.nextInt(); if(month<1||month>12) { System.out.println("月份输入有误,请重新输入"); continue; } scanner.close(); break; } Calendar calendar = Calendar.getInstance(); // 设置到当前年月的第一天 calendar.set(year, month - 1, 1); // 获取当前月份一共多少天 int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); // 获取当前月份的第一天是星期几 数字与实际星期差1,且老美的第一天是星期日 int week = calendar.get(Calendar.DAY_OF_WEEK); //前面空格的数字就是等于星期几的数字 int spaceNum=week-1; System.out.println("\t\t "+year+"年"+month+"月\r"); //打印星期固定格式 System.out.println("日\t一\t二\t三\t四\t五\t六"); //打印1号前面的空格数 for(int i =0;i<spaceNum;i++) { System.out.print("\t"); } //打印日期数字 for(int i =1;i<=days;i++) { System.out.print(i+"\t"); //判断是否换行 前面空格数+当前日期 若是7的倍数就要换一行了 if((spaceNum+i)%7==0) { System.out.println(); } } }
运行结果:
二、simpleDateFormat
是一个日期格式化的类--->可以实现日期格式转成字符串,字符串--->转成日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//按照这个格式 try { Date date =simpleDateFormat.parse("2018-07-31 21:03:05"); System.out.println(date); //转后的日期格式输出 Tue Jul 31 21:03:05 CST 2018 Date date3= new Date(); //获取了当前日期时间 String s= simpleDateFormat.format(date3); System.out.println(s); //按照初始的格式输出日期字符串 2018-07-31 09:22:02 } catch (ParseException e) { e.printStackTrace(); }