ユーザーは、特定の年のカレンダーをカスタマイズして印刷できます。つまり、特定の年のすべてのカレンダーを印刷できます。
たとえば、2013 年のカレンダーを次のように印刷します。
2013 年 2 月
--------------------------------------
日 月 火 水 木 金 土
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28
2013 年 3 月
--------------------------------------
日 月 火 水 木 金 土
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28 29 30
2013 年 4 月
--------------------------------------
日 月 火 水 木 金 土
2 3 4 5 6
8 9 10 11 12 13
15 16 17 18 19 20
22 23 24 25 26 27
29 30
2013 年 5 月
--------------------------------------
日 月 火 水 木 金 土
2 3 4
6 7 8 9 10 11
13 14 15 16 17 18
20 21 22 23 24 25
27 28 29 30 31
2013 年 6 月
--------------------------------------
日 月 火 水 木 金 土
3 4 5 6 7 8
10 11 12 13 14 15
17 18 19 20 21 22
24 25 26 27 28 29
2013 年 7 月
--------------------------------------
日 月 火 水 木 金 土
2 3 4 5 6
8 9 10 11 12 13
15 16 17 18 19 20
22 23 24 25 26 27
29 30 31
2013 年 8 月
--------------------------------------
日 月 火 水 木 金 土
23
5 6 7 8 9 10
12 13 14 15 16 17
19 20 21 22 23 24
26 27 28 29 30 31
2013 年 9 月
--------------------------------------
日 月 火 水 木 金 土
2 3 4 5 6 7
9 10 11 12 13 14
16 17 18 19 20 21
23 24 25 26 27 28
30
2013 年 10 月
--------------------------------------
日 月 火 水 木 金 土
2 3 4 5
7 8 9 10 11 12
14 15 16 17 18 19
21 22 23 24 25 26
28 29 30 31
2013 年 11 月
--------------------------------------
日 月 火 水 木 金 土
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28 29 30
2013 年 12 月
--------------------------------------
日 月 火 水 木 金 土
2 3 4 5 6 7
9 10 11 12 13 14
16 17 18 19 20 21
23 24 25 26 27 28
30 31
印刷例:2014年1月カレンダー
今日が 2013-04-27 の場合、今月のカレンダーは次のように印刷されます。
次に、コード部分を入力します。
================================================= ======
コード部分:
================================================= ======
/UUUUUU_Test/src/com/b510/date/HongtenDate.java
インポート java.text.SimpleDateFormat;
java.util.Calendarをインポートします。
java.util.Dateをインポートします。
java.util.GregorianCalendar をインポートします。
/**
* 日付処理クラス。このクラスでは、コンストラクター <code>HongtenDate()</code> がデフォルトで年を現在の年に設定します。<br>
* <code>HongtenDate(int year)</code> では、年をカスタマイズできます<br>
*
* <前>
* HontenDate 日付 = new HontenDate();
* </pre>
*
* または<br>
*
* <前>
*HongtenDate hd = 新しいHongtenDate(2014);
* </pre>
*
* <code>printCalendar()</code> を呼び出して、年の日付を印刷します。<br>
* <code>printCurrentMonth()</code> を呼び出して、現在の月の日付を出力します<br>
* もちろん、電話することもできます<br>
* <code>printMonthOf Year()</code>特定の月の日付を印刷するためのパラメータを設定します<br>
* 参考プランをいくつか紹介します。<br>
*
* <前>
* // パラメーターはありません。システムのデフォルトは現在の年です。
* HontenDate 日付 = new HontenDate();
* date.printCalendar();
* date.printCurrentMonth();
* 日付.printMonthOf Year(4);
* </pre>
*
* または<br>
*
* <前>
* // 2014 に設定します
*HongtenDate hd = 新しいHongtenDate(2014);
* hd.printCurrentMonth();
* hd.printMonthOf Year(1);
* </pre>
*
* @日付 2013-4-27
* @著者ホンテン
*
*/
パブリッククラスHongtenDate {
//月
// ============================================
public static Final String JANUARY = "1 月";
public static Final String FEBUARY = "2 月";
public static Final String MARCH = "3月";
public static Final String APRIL = "4月";
public static Final String MAY = "May";
public static Final String JUN = "Jun";
public static Final String JULY = "7月";
public static Final String AUGUST = "8月";
public static Final String SEPTERMBER = "9 月";
public static Final String OCTOBER = "10 月";
public static Final String NOVEMBER = "11 月";
public static Final String DECEMBER = "12 月";
/**
* 年
*/
プライベート int 年。
/**
* 1 月 1 日の曜日 (例: 2013-01-01--> 火曜日なので、<code>whatDayOnMondayOne = 2;</code>)
*/
private int whatDayOn JanuaryOne;
// 主要
// ======================================
public static void main(String[] args) throws Exception {
// パラメーターはありません。システムはデフォルトで現在の年を設定します。
HontenDate 日付 = new HontenDate();
//date.printCalendar();
date.printCurrentMonth();
// date.printMonthOf Year(4);
// 2014 年に設定
紅天日付 hd = 新しい紅天日付(2014);
// hd.printCurrentMonth();
// hd.printMonthOf Year(1);
}
// パラメーターはありません。システムはデフォルトで現在の年を設定します。
public HontenDate() {
カレンダー cal = Calendar.getInstance();
this.year = cal.get(Calendar.YEAR);
試す {
setWhatDayOn JanuaryOne(getMondayOne(年));
} catch (例外 e) {
e.printStackTrace();
}
}
//パラメータを使用して年を設定します
public HontenDate(int year) {
this.year = 年;
試す {
setWhatDayOn JanuaryOne(getMondayOne(年));
} catch (例外 e) {
e.printStackTrace();
}
}
/**
* 特定の月のすべての日付を印刷します
*
* @parammon
* 月
* @throwsException
*/
public void printMonthOf Year(int mon) throws Exception {
if (月 < 1 || 月 > 12) {
System.out.println("[" + mon + "] で入力した月が間違っています。確認中です。");
戻る;
}
現在の GregorianCalendar = new GregorianCalendar();
//Dateオブジェクトを取得する
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
日付 date = sdf.parse(年 + "-" + 月 + "-01");
// 現在時刻を設定する
now.setTime(日付);
// 日付から現在の月を取得します
int month = now.get(Calendar.MONTH);
// 現在の日付を 1 に設定します
now.set(Calendar.DAY_OF_MONTH, 1);
// 現在の曜日を取得します
int 週 = now.get(Calendar.DAY_OF_WEEK);
//カレンダーのヘッダーラベルを印刷します
System.out.println("日/t一/t二/t三/t四/t五/t六");
// 現在の日付の前のスペースを出力します
for (int i = Calendar.SUNDAY; i < 週; i++) {
System.out.print("/t");
}
//カレンダー本文を印刷する
while (now.get(Calendar.MONTH) == 月) {
int day = now.get(Calendar.DAY_OF_MONTH);
//出力カレンダーを位置合わせし、10 未満の場合はスペースを追加します
if (日 < 10) {
System.out.print(" " + 日 + "/t");
} それ以外 {
System.out.print("" + 日 + "/t");
}
// 土曜日の場合は行を折り返す
if (週 == Calendar.SATURDAY) {
System.out.println();
}
// 日付が出力されるたびに日付に 1 日を加算します
now.add(Calendar.DAY_OF_MONTH, 1);
// 曜日を取得する
週 = now.get(Calendar.DAY_OF_WEEK);
}
}
/**
* 当月のすべての日付を印刷します。これは、ユーザーが設定した年によって変わりません。
*/
public void printCurrentMonth() {
現在の GregorianCalendar = new GregorianCalendar();
//Dateオブジェクトを取得する
日付 date = new Date();
// 現在時刻を設定する
now.setTime(日付);
//日付から現在の日を取得する
int toDay = now.get(Calendar.DAY_OF_MONTH);
// 日付から現在の月を取得します
int month = now.get(Calendar.MONTH);
// 現在の日付を 1 に設定します
now.set(Calendar.DAY_OF_MONTH, 1);
// 現在の曜日を取得します
int 週 = now.get(Calendar.DAY_OF_WEEK);
//カレンダーのヘッダーラベルを印刷します
System.out.println("日/t一/t二/t三/t四/t五/t六");
// 現在の日付の前のスペースを出力します
for (int i = Calendar.SUNDAY; i < 週; i++) {
System.out.print("/t");
}
//カレンダー本文を印刷する
while (now.get(Calendar.MONTH) == 月) {
int day = now.get(Calendar.DAY_OF_MONTH);
//出力カレンダーを位置合わせし、10 未満の場合はスペースを追加します
if (日 < 10) {
// 現在の日付の場合はラベルを追加します
if (日 == 今日) {
System.out.print(":)" + 日 + "(:/t");
} それ以外 {
System.out.print(" " + 日 + "/t");
}
} それ以外 {
// 現在の日付の場合はラベルを追加します
if (日 == 今日) {
System.out.print(":)" + 日 + "(:/t");
} それ以外 {
System.out.print("" + 日 + "/t");
}
}
// 土曜日の場合は行を折り返す
if (週 == Calendar.SATURDAY) {
System.out.println();
}
// 日付が出力されるたびに日付に 1 日を加算します
now.add(Calendar.DAY_OF_MONTH, 1);
// 曜日を取得する
週 = now.get(Calendar.DAY_OF_WEEK);
}
}
/**
* 今年の 1 月 1 日が何曜日であるかを取得します。
*
* @param年
* 年
* @戻る
* @throwsException
*/
public int get JanuaryOne(int year) は例外をスローします {
int[] 週日 = { 0, 1, 2, 3, 4, 5, 6 };
カレンダー cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
日付 dt = sdf.parse(年 + "-01-01");
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
週日を返します[w];
}
/**
* 年間すべての月を印刷します
*/
public void printCalendar() {
for (int i = 1; i <= 12; i++) {
文字列月 = getMonth(i);
printTitle(月);
// 31 日の月を出力します
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
print31();
}
// 30 日を含む月を出力します
else if (i == 4 || i == 6 || i == 9 || i == 11) {
print30();
}
// 2月を出力します
else if (i == 2) {
printFebuary();
}
System.out.println();
}
}
//印刷フォーマット
// ============================================ 開始
/**
※2月を印刷します。2月は毎年異なる場合があるため、別途処理する必要があります。
*/
protected void printFebuary() {
if (この年 % 4 == 0) {
// 閏年
printLeapyear();
} それ以外 {
// 通常の年
printNonleapyear();
}
}
/**
※閏年2月の印刷フォーマット
*/
private void printLeap Year() {
for (int j = 1; j <= 29; j++) {
文字列 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnMondayOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOn JanuaryOne == 6) {
System.out.println(tmp);
} それ以外 {
System.out.print(tmp);
}
else if (j > 1 && j < 29) {
if ((this.whatDayOnMondayOne + j) % 7 == 0) {
System.out.println(" " + j);
} それ以外 {
if (j < 10) {
System.out.print(" " + j + " ");
} それ以外 {
System.out.print(" " + j + " ");
}
}
} else if (j == 29) {
System.out.println(" " + j);
this.whatDayOnMondayOne = ((this.whatDayOnMondayOne + j) % 7);
}
}
}
/**
※平年2月のフォーマットを印刷します。
*/
private void printNonleapyear() {
for (int j = 1; j <= 28; j++) {
文字列 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnMondayOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOn JanuaryOne == 6) {
System.out.println(tmp);
} それ以外 {
System.out.print(tmp);
}
} else if (j > 1 && j < 28) {
if ((this.whatDayOnMondayOne + j) % 7 == 0) {
System.out.println(" " + j);
} それ以外 {
if (j < 10) {
System.out.print(" " + j + " ");
} それ以外 {
System.out.print(" " + j + " ");
}
}
} else if (j == 28) {
System.out.println(" " + j);
this.whatDayOnMondayOne = ((this.whatDayOnMondayOne + j) % 7);
}
}
}
/**
* 月を 30 日で印刷します
*/
protected void print30() {
for (int j = 1; j <= 30; j++) {
文字列 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnMondayOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOn JanuaryOne == 6) {
System.out.println(tmp);
} それ以外 {
System.out.print(tmp);
}
} else if (j > 1 && j < 30) {
if ((this.whatDayOnMondayOne + j) % 7 == 0) {
System.out.println(" " + j);
} それ以外 {
if (j < 10) {
System.out.print(" " + j + " ");
} それ以外 {
System.out.print(" " + j + " ");
}
}
} else if (j == 30) {
System.out.println(" " + j);
this.whatDayOnMondayOne = ((this.whatDayOnMondayOne + j) % 7);
}
}
}
/**
* 31 日のある月を印刷します
*/
protected void print31() {
for (int j = 1; j <= 31; j++) {
文字列 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnMondayOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOn JanuaryOne == 6) {
System.out.println(tmp);
} それ以外 {
System.out.print(tmp);
}
else if (j > 1 && j < 31) {
if ((this.whatDayOnMondayOne + j) % 7 == 0) {
System.out.println(" " + j);
} それ以外 {
if (j < 10) {
System.out.print(" " + j + " ");
} それ以外 {
System.out.print(" " + j + " ");
}
}
} else if (j == 31) {
System.out.println(" " + j);
this.whatDayOnMondayOne = ((this.whatDayOnMondayOne + j) % 7);
}
}
}
/**
※各月のタイトルを印刷します。
*
* @param 月
*/
protected void printTitle(String month) {
System.out.println(" " + month + " " + this.year + " ");
System.out.println("------------------------------------------ -- --");
System.out.println("日月火水木金土");
}
//印刷フォーマット
// ============================================== 終了
/**
* 月の英語名を取得します
*
* @param m
※月を数値で表したもの
* @戻る
*/
public String getMonth(int m) {
文字列月 = "";
スイッチ (m) {
ケース1:
月 = 1 月;
壊す;
ケース 2:
月 = 2 月;
壊す;
ケース 3:
月 = 3 月;
壊す;
ケース4:
月 = 4 月;
壊す;
ケース5:
月 = 5月;
壊す;
ケース6:
月 = 6月;
壊す;
ケース7:
月 = 7 月;
壊す;
ケース8:
月 = 8月;
壊す;
ケース9:
月 = 9 月;
壊す;
ケース 10:
月 = 10月;
壊す;
ケース 11:
月 = 11 月;
壊す;
ケース 12:
月 = 12月;
壊す;
}
戻り月。
}
public int get Year() {
戻り年。
}
public void set Year(int year) {
this.year = 年;
}
public int getWhatDayOn JanuaryOne() {
1 月 1 日の何日を返します。
}
public void setWhatDayOnMondayOne(int whatDayOnMondayOne) {
this.whatDayOn1 月 One = whatDayOn1 月 One;
}
}