CoreJava中日历代码=
package chapterfour;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
public class CalendarTest
{
public static void main(String[] args)
{
Locale.setDefault(Locale.US); //设置地去
Calendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH); // 获取今天
int month = d.get(Calendar.MONTH); // 获取当前月
d.set(Calendar.DAY_OF_MONTH, 1);
int firstDayOfThisMonth = d.get(Calendar.DAY_OF_WEEK); // 本月第一天
int firstDayOfWeek = d.getFirstDayOfWeek(); // 获取一周的第一天表示
// 找到一个月的第一天和一周第一天之间的空白之处
int tag = 0;
while (firstDayOfThisMonth != firstDayOfWeek)
{
tag++;
d.add(Calendar.DAY_OF_MONTH, -1);
firstDayOfThisMonth = d.get(Calendar.DAY_OF_WEEK);
}
System.out.println(firstDayOfThisMonth == firstDayOfWeek);
// 打印一个月的头部
String[] variousWeekdays = new DateFormatSymbols().getShortWeekdays();
do
{
System.out.printf("%4s", variousWeekdays[firstDayOfThisMonth]);
d.add(Calendar.DAY_OF_MONTH, 1);
firstDayOfThisMonth = d.get(Calendar.DAY_OF_WEEK);
}
while (firstDayOfThisMonth != firstDayOfWeek);
System.out.println();
//打印一个月第一天之前的空白天数
for (int i=0; i<tag; i++)
{
System.out.print(" ");
}
//开始打印
d.set(Calendar.DAY_OF_MONTH, 1);
while (month == d.get(Calendar.MONTH))
{
int currentDay = d.get(Calendar.DAY_OF_MONTH);
if (currentDay == today)
{
System.out.printf("%3d", currentDay);
System.out.print("*");
}
else
{
System.out.printf("%4d", currentDay);
}
d.add(Calendar.DAY_OF_MONTH, 1);
firstDayOfThisMonth = d.get(Calendar.DAY_OF_WEEK);
if (firstDayOfThisMonth == firstDayOfWeek)
{
System.out.println();
}
}
}
}
输出:

浙公网安备 33010602011771号