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
いいでしょ♪ぜひ印刷して壁に貼ってください!!