import java.text.*;
import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
Locale.setDefault(Locale.ENGLISH);
// construct d as current date
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH); // current date
int month = d.get(Calendar.MONDAY); // current month
// set d to start date of the month (将d设置为这个月的第一天)
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday = d.get(Calendar.DAY_OF_WEEK); // 获取第一天的星期
// get first day of week (Sunday in the U.S.) 星期的起始日
int firstDayOfWeek = d.getFirstDayOfWeek(); // 1
// determine the required indentation for the first line
// 将日历对象的日减1,直到一个星期的第一天为止
int index = 0;
while (weekday != firstDayOfWeek) {
index++;
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
// print weekday names
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
do {
System.out.printf("%4s", weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
} while (weekday != firstDayOfWeek);
System.out.println();
for (int i = 0; i < index; i++)
System.out.print(" ");
d.set(Calendar.DAY_OF_MONTH, 1);
do {
// print day
int day = d.get(Calendar.DATE);
System.out.printf("%3d", day);
// mark current day with*
if (day == today)
System.out.print("*");
else
System.out.print(" ");
// advance d to the next day
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
// start a new line at the start of the week
if (weekday == firstDayOfWeek)
System.out.println();
} while (d.get(Calendar.MONDAY) == month);
// the loop exits when d is day 1 of the next month
// print final end of the line if necessary
if (weekday != firstDayOfWeek)
System.out.println();
}
}
用GregorianCalendar类打印日历
最新推荐文章于 2022-09-16 14:57:31 发布