黑马程序员技术交流社区
标题:
打印当前月份的日历
[打印本页]
作者:
Jaybor
时间:
2015-2-10 23:53
标题:
打印当前月份的日历
在java核心基础上看到这道题
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
/*
* 需求:打印出当前月的日历,并且在当前天数前加上"*"号
* 实现:1.生成一个Gregorian Calendar的实例gc
* 2.得到当前的月份和日期
* 3.将gc设定为本月第一天,得到它的DAY_OF_WEEK值(星期天为1,星期六为7)
* 4.得到firstDayOfWeek,默认为1;然后do while循环,将gc对应为本月1号所在星期的星期日;
* 5.接下来打印星期X(从星期日-星期六):用do while循环以及SimpleDateSymbols类的getShortWeekdays()方法得到的字符串数组。
* 循环知道DAY_OF_WEEK值为firstDayOfWeek为止;
* 6.再打印DAY_OF_MONTH,要从1号开始,所以首先要将gc重置为本月的第一天,然后运用do while循环将day打印出来;
* 当打印到星期六时要求换行打印,在当前日期后要求加一个星号;循环退出条件为month(初始)==gc.get(Calendar.MONTH);
*/
public class CalendarDemo
{
public static void main(String[] args)
{
//得到GregorianCalendar的实例
GregorianCalendar gc=new GregorianCalendar();
//得到当前的月份和日期:
int month=gc.get(Calendar.MONTH);
int today=gc.get(Calendar.DAY_OF_MONTH);
/*将gc设置为本月的第一天,并且得到这一天是星期几
* 从周日到周六DAY_OF_WEEK从1-7;
*/
gc.set(Calendar.DAY_OF_MONTH,1);
int weekday=gc.get(Calendar.DAY_OF_WEEK);
//设置时区:
Locale.setDefault(Locale.US);
//获得当前地区星期的起始日:
int firstDayOfWeek=gc.getFirstDayOfWeek();
//将gc重置,知道gc所对应的日期是本月第一个星期的星期天;
while(weekday!=firstDayOfWeek)
{
gc.add(Calendar.DAY_OF_MONTH,-1);
weekday=gc.get(Calendar.DAY_OF_WEEK);
}
//输出表示星期几的头:
String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
do
{
System.out.printf("%4s",weekdayNames[weekday]);//最先打印出来的是一星期中的第一天
gc.add(Calendar.DAY_OF_MONTH,1);//将gc所代表的日子往后推1天;
weekday=gc.get(Calendar.DAY_OF_WEEK);
}
while(firstDayOfWeek!=weekday);
System.out.println();
gc.set(Calendar.DAY_OF_MONTH, 1);
//打印出日期,从当月的1号开始打印:
do
{
int day=gc.get(Calendar.DAY_OF_MONTH);
//print day
System.out.printf("%3d",day);
//在当前日期后加星号
if(day==today)
System.out.print("*");
else
System.out.print(" ");
gc.add(Calendar.DAY_OF_MONTH, 1);
weekday=gc.get(Calendar.DAY_OF_WEEK);
//如果打印到星期六了,那么下次打印前就得先换行
if(weekday==firstDayOfWeek)
System.out.println();
}
while(gc.get(Calendar.MONTH)==month);
}
}
复制代码
作者:
白衣布士
时间:
2015-2-11 00:25
貌似有点复杂。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2