![146152c391fb81ac43bb6bbf84f7c055.png](https://i-blog.csdnimg.cn/blog_migrate/0800fc1f02bbb164a1d6f7bd637241c6.jpeg)
做了一个输入日期,就能将相应的月份日历表达出来的额小功能。
要实现的效果如下:
![605de591778efb8b3cc6e298c8fcd309.png](https://i-blog.csdnimg.cn/blog_migrate/4de4708a3e5c35ebe3756760bb0830da.jpeg)
要实现的就是输入指定的日期格式然后得出这样一个列表,然后在当前的日期后带一个星号;这个小练习主要时对Date数据类型包的相关练习,涉及了字符串转化为Date格式。例如可以这样去写DateFormat p = new SimpleDateFormat("yyyy-MM-dd");
Date date = p.parse(date1);
转化为日期类型之后呢,我们要获取所输入的具体的年月日的具体数字,所以这是使用了Calendar的类方法,他的使用方法可以这样去写:Calendar p = new GregorianCalendar();
p.setTime(date);
通过Calendar的get()方法来获取到输入日期的年月日。根据我们要达到的效果,我们要获取到1号所对应的周几,才能开始输出数字,这时呢,我们可以用先
![cbc37ccab8e3ca49b42beab9749888ed.png](https://i-blog.csdnimg.cn/blog_migrate/84020aead729fd15f3f56aa9223f7daf.jpeg)
先使用cal.set(Calendar.DAY_OF_MONTH,1);命令,设置天数为1号,然后以int nowWeek = cal.get(Calendar.DAY_OF_WEEK);命令获取到是周几,这时就可以使用for循环来输出空格数来确定1号的位置:for(int i =1 ;i<nowWeek;i++) {
System.out.print("t");
}
然后要达到换行的效果,我们设置的是在周六出换行,可以使用if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
System.out.println();
}
该判断语句,当日期数为周六日时就输出换行的操作,这样基本达到我们所要的效果,此时还有一个问题就是月份中有不一样的天数,所以我们循环输出日子时要给它的限制条件设置为每月的具体天数,此时可以使用int mat =cal.getActualMaximum(Calendar.DAY_OF_MONTH);
语句来获取每月的具体天数,加入循环的条件即可,具体完整的代码如下:
![f0b408592888729f8701ae1eec822de3.gif](https://i-blog.csdnimg.cn/blog_migrate/01a0d38dbc7ada73aeb18c264aa137db.gif)
YYNoah