网站互联网设计图风格,网站服务器异常是什么意思,河北邯郸魏县,国外网站代做【0】README
0.1#xff09;本文文字总结于 core java volume 1 #xff0c; 源代码均为原创#xff1b; 0.2#xff09;本文旨在熟悉 GregorianCalendar 日历类#xff0c;每一天就是一个GregorianCalendar 日历类#xff0c;一天有很多的日历属性#xff0c;觉得用它…【0】README
0.1本文文字总结于 core java volume 1 源代码均为原创 0.2本文旨在熟悉 GregorianCalendar 日历类每一天就是一个GregorianCalendar 日历类一天有很多的日历属性觉得用它打印一个月份的日历出来很好玩的样子 【1】直接对源代码的关键步骤进行分析
step1 首先构造一个日历对象并用当前的日期和时间进行初始化这里还设置了日历类的时区和方言
gc new GregorianCalendar(TimeZone.getTimeZone(Asia/Chongqing),Locale.SIMPLIFIED_CHINESE);
step2 调用get方法获得当前的日月
today gc.get(Calendar.DAY_OF_MONTH);
month gc.get(Calendar.MONTH); //当前月份
step3 将 gc 设置为当前月的第一天得到这个月的第一天是星期几以及一周的第一天
gc.set(Calendar.DAY_OF_MONTH, 1); //设置 gc 为当前月的第一天
weekday gc.get(Calendar.DAY_OF_WEEK);//这个月的第一天是星期几
firstDayOfWeek gc.getFirstDayOfWeek(); // 一周的第一天美国是周日中国是周一
如果第一天是星期日变量firstDayOfWeek就是Calendar.SUNDAY 如果是星期一就设置为Calendar.MONDAY 以此类推在美国每个星期的第一天是星期日 而欧洲是星期一Hint如果想看到不同地区程序的输出 应该在main 方法的第一行中添加如下代码如ITALY
Locale.setDefault(Locale.ITALY)
step4获得星期名数组打印星期
weekdayNames new DateFormatSymbols().getShortWeekdays();//星期名数组
for(String str : weekdayNames) //打印星期名称数组out.printf(%6s, str);
out.printf(\n);
step5打印前面的缩进空格空格数这个月第一天的星期数减去该地区星期的起始计数美国是星期日中国是星期一) for (int i 0; i weekday - firstDayOfWeek; i)out.printf(%5s, ); //打印前面的缩进空格
step6正式开始打印日历只需要注意当循环到的日历天 属于 该地区星期的起始计数时美国是星期日中国是星期一要换行打印以及如果日历循环到今天则多打印一个*号以示区别
for (int i 1; i 100; i)
{gc.set(Calendar.DAY_OF_MONTH, i);if(gc.get(Calendar.MONTH) ! month)break;if(gc.get(Calendar.DAY_OF_WEEK) firstDayOfWeek)out.printf(\n);out.printf(%5d, i);if(i today)out.printf(*);
} 【2】源代码
2.1download source code https://github.com/pacosonTang/core-java-volume/blob/master/chapter4/Chapter4Test.java 中的 main1 方法 2.2source code at a glance
public static void main1(String[] args){GregorianCalendar gc;int today;int month;int weekday;int firstDayOfWeek;String[] weekdayNames; Locale.setDefault(Locale.CHINESE);// 设置方言为 简体中文;gc new GregorianCalendar(TimeZone.getTimeZone(Asia/Chongqing),Locale.SIMPLIFIED_CHINESE);// 上行设置日历的时区和方言today gc.get(Calendar.DAY_OF_MONTH);gc.set(Calendar.DAY_OF_MONTH, 1); //设置 gc 为当前月的第一天weekday gc.get(Calendar.DAY_OF_WEEK);//这个月的第一天是星期几firstDayOfWeek gc.getFirstDayOfWeek(); // 一周的第一天美国是周日中国是周一month gc.get(Calendar.MONTH); //当前月份weekdayNames new DateFormatSymbols().getShortWeekdays();//星期名数组//System.out.println(today month weekday firstDayOfWeek);for(String str : weekdayNames) //打印星期名称数组out.printf(%6s, str);out.printf(\n);for (int i 0; i weekday - firstDayOfWeek; i)out.printf(%5s, ); //打印前面的缩进空格for (int i 1; i 100; i){gc.set(Calendar.DAY_OF_MONTH, i);if(gc.get(Calendar.MONTH) ! month)break;if(gc.get(Calendar.DAY_OF_WEEK) firstDayOfWeek)out.printf(\n);out.printf(%5d, i);if(i today)out.printf(*);}} 【3】打印结果我是10月31号修改的源代码