2009年7月17日

Java Calendar


import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.Locale;

public class Main {

private static Locale locale = Locale.getDefault();
private static String[] weekdays = DateFormatSymbols.getInstance(locale).getShortWeekdays();
private static StringBuilder sb = new StringBuilder();

public static void main(String[] args) throws Exception {
Calendar calendar = Calendar.getInstance(locale);

for (int i = Calendar.JANUARY; i <= Calendar.DECEMBER; i++) {
calendar.set(Calendar.MONTH, i);
printCalendar(calendar);
}
System.out.println(sb);
}

private static void printCalendar(Calendar calendar) {
int week = calendar.getActualMaximum(Calendar.DAY_OF_WEEK);
int maxDayOfMonth = calendar.getActualMaximum(Calendar.DATE);

String era = calendar.getDisplayName(Calendar.ERA, Calendar.ALL_STYLES, locale);
int year = calendar.get(Calendar.YEAR);
String month = calendar.getDisplayName(Calendar.MONTH, Calendar.ALL_STYLES, locale);
sb.append(String.format("%1$s %2$d %3$s\r\n", era, year, month));

for (String weekStr : weekdays) {
sb.append(weekStr).append('\t');
}

calendar.set(Calendar.DATE, 1);
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 2;
int modWeek = (week - dayOfWeek) % week;

for (int i = -dayOfWeek; i <= maxDayOfMonth; i++) {
if ((week + i) % week == modWeek) {
sb.append("\r\n").append(weekOfYear).append('\t');
weekOfYear++;
}
if (i > 0) {
sb.append(String.format("%d\t", i));
} else {
sb.append("\t");
}

}
sb.append("\r\n\r\n");
}

}

沒有留言:

網誌存檔