package org.pcl.shili;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* 在控制台输出当前Yue份的日历信息
* @author yifan
*
*/
public class ShowRiLi {
public static void main(String[] args) {
// 创建一个日历对象
GregorianCalendar gr = new GregorianCalendar();
// 获得今天和这个Yue
int today = gr.get(Calendar.DAY_OF_MONTH); // 这个Yue中的今天
int month = gr.get(Calendar.MONTH);
System.out.println("这个是Yue:" + gr.get(Calendar.MONTH));
// 这是gr对象为这个Yue的第一天
gr.set(Calendar.DAY_OF_MONTH,0); // 是从0开始的
// 获得第一天是星期几
int weekday = gr.get(Calendar.DAY_OF_WEEK);
System.out.println("这个的第一天是星期:" + weekday);
// 为了对应星期列表需进行缩进
// 获得当前地区的星期起始日
int firstDayOfWeek = gr.getFirstDayOfWeek();
int index = 0;
while(weekday != firstDayOfWeek) {
index++;
gr.add(Calendar.DAY_OF_MONTH, -1);
weekday = gr.get(Calendar.DAY_OF_WEEK);
}
// 获得当前地区的星期标识并打印
String[] WeekNames = new DateFormatSymbols().getWeekdays();
for(String name : WeekNames) {
System.out.printf("%s", name);
}
// do {
// System.out.printf("%4s", WeekNames[weekday]);
// gr.add(Calendar.DAY_OF_MONTH, 1);
// weekday = gr.get(Calendar.DAY_OF_WEEK);
// } while (weekday != firstDayOfWeek);
//System.out.println();
System.out.println();
// 打印缩进
for(int i=0; i<=index; i++) {
System.out.printf("%9s", " ");
}
// 这是gr对象为这个Yue的第一天
gr.add(Calendar.DAY_OF_MONTH, index+1); // 在计算1号是星期几的时候进行了后移操作,所以这个进行了前移操作
//System.out.println(gr.get(Calendar.DAY_OF_MONTH));
//System.out.println("这个是Yue:" + gr.get(Calendar.MONTH));
// 循环打印这个日历今天后面带*号
do {
int day = gr.get(Calendar.DAY_OF_MONTH); // 获得gr的一天
System.out.printf("%3d", day);
if(day == today) {
System.out.print("* ");
} else {
System.out.print(" ");
}
gr.add(Calendar.DAY_OF_MONTH, 1); // 指向下一天
weekday = gr.get(Calendar.DAY_OF_WEEK);
// 如果是这个星期的最后一天输出换行
if(weekday == firstDayOfWeek) {
System.out.println();
}
//System.out.println(gr.get(Calendar.MONTH));
} while (gr.get(Calendar.MONTH) == month); // 如果是这个yue就执行
}
}
这个是Java核心技术的代码, 这本书很好就是看着太累了, 一天看不了多少还要写上面的事例代码