1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.GregorianCalendar; 6 import java.util.Scanner; 7 8 9 public class PrinTime { 10 11 /** 12 * @param args 13 */ 14 public static void main(String[] args) { 15 Scanner input = new Scanner(System.in); 16 17 String dateString = ""; //日期字符串 18 System.out.print("请输入年份:"); 19 dateString += input.next(); 20 System.out.print("请输入月份:"); 21 dateString += "-" + input.next(); 22 23 //创建日期格式对象,以便获得Date类型的日期,构造函数参数是自定义格式,年-月 24 SimpleDateFormat dateFormat = new SimpleDateFormat("yy-MM"); 25 Date datitime = null; 26 try { 27 datitime = dateFormat.parse(dateString);//根据SimpleDateFormat对象的parse方法获得Date类型的日期,方法参数是日期字符串 28 } catch (ParseException e) { 29 // TODO Auto-generated catch block 30 e.printStackTrace(); 31 } 32 //创建日历对象 33 Calendar calendar = new GregorianCalendar(); 34 //设置此日历对象的日期 35 calendar.setTime(datitime); 36 //创建数组保存日期,一个日期最多6行7列 37 int dateTimes[] = new int[6*7]; 38 39 //给日期数组赋值,根据GregorianCalendar对象的getActualMaximum方法获得该月的最大天数,该方法的参数是GregorianCalendar对象的日期 40 //getActualMaximum自动判断最大日期 41 for (int i = 1; i <= calendar.getActualMaximum(calendar.DATE); i++) { 42 /* 43 * 从该日历1号在一周中的天数后开始赋值 44 * Calendar对象的get方法获得的日期在一周中的天数会比我们的多一天,应是外国喜欢每周周日是第一天 45 * 数组索引从0开始,所以要-1再-1 46 * */ 47 dateTimes[i+calendar.get(calendar.DAY_OF_WEEK)-1-1] = i; 48 } 49 //打印输出 50 System.out.println("日 一 二 三 四 五 六"); 51 for (int i = 0; i < dateTimes.length; i++) { 52 //从该日历1号在一周中的天数后开始打印 53 if (dateTimes[i] != 0) { 54 System.out.print(dateTimes[i]); 55 } 56 System.out.print(" "); 57 //每打印一周的日期就换行 58 if ((i+1) %7 == 0) { 59 System.out.println(""); 60 } 61 } 62 } 63 64 }
Java打印日历
欢迎提出意见或建议!!!