2006/01
新年ということでカレンダーを出力するツールを作ってみました。
package tool; import java.util.Calendar; import java.util.GregorianCalendar; public class CalendarMaker { /** * args[0]に指定したカレンダーを出力する * @param args args[0]に対象年(yyyy) */ public static void main(String[] args) { String yyyy = args[0]; int year = Integer.parseInt(yyyy); for (int i = 1; i < 13; i++) { int month = i; printCalendar(year, month); System.out.println(""); System.out.println(""); } } /** * 指定した年月のカレンダーを出力する * @param year 年 * @param month 月(1〜12) */ private static void printCalendar(int year, int month) { System.out.println(year + "年" + month + "月"); String[] dayOfWeeks = { "日", "月", "火", "水", "木", "金", "土" }; for (int i = 0; i < dayOfWeeks.length; i++) { System.out.print(dayOfWeeks[i] + " "); } System.out.println(""); String space = " "; int day = 1; GregorianCalendar c = new GregorianCalendar(year, --month, day); for (;;) { int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); int date = c.get(Calendar.DATE); if (date == 1) { String indent = ""; if (dayOfWeek != Calendar.SUNDAY) { indent = space.substring(0, (dayOfWeek - 1) * 3); } System.out.print(indent); } String pad = ""; if (date < 10) { pad = " "; } System.out.print(pad + date + " "); if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { System.out.println(""); } c.add(Calendar.DATE, 1); if (month != c.get(Calendar.MONTH)) { break; } } System.out.println(""); } }
実行してみましょう
javac -d . CalendarMaker.java
java tool.CalendarMaker 2006
2006年1月
日 月 火 水 木 金 土
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
・
・
・
2006年12月
日 月 火 水 木 金 土
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
いいでしょ♪ぜひ印刷して壁に貼ってください!!