1. ホーム
  2. java

[解決済み] カレンダーを印刷する【終了しました

2022-02-07 21:50:10

質問

通常のカレンダーを作る方法は知っているのですが、以下のようなものです。

のコードで指定します。

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalendarDateExample {

    public static void main(String[] args) {
        // Create an instance of a GregorianCalendar
        Calendar calendar = new GregorianCalendar(2014, 1, 06);

        System.out.println("Year: " + calendar.get(Calendar.YEAR));
        System.out.println("Month: " + (calendar.get(Calendar.MONTH) + 1));
        System.out.println("Day: " + calendar.get(Calendar.DAY_OF_MONTH));

        // Format the output.
        SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(date_format.format(calendar.getTime()));
    }
} 

出力: 年:2014年 月 2 日数:6日 2014-02-06

しかし、指定された月と年のカレンダーを表示するには、次のようにします。

July 2005
   S  M  T  W Th  F  S
                 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 

私はjavaの初心者で、上記の方法を知りたいです。 ありがとうございました。

どのように解決するのですか?

こんなこともできるんですね。

Calendar calendar = new GregorianCalendar(2014, 1, 06);
calendar.set(Calendar.DAY_OF_MONTH, 1); //Set the day of month to 1
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); //get day of week for 1st of month
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

//print month name and year
System.out.println(new SimpleDateFormat("MMMM YYYY").format(calendar.getTime()));
System.out.println(" S  M  T  W  T  F  S");

//print initial spaces
String initialSpace = "";
for (int i = 0; i < dayOfWeek - 1; i++) {
    initialSpace += "   ";
}
System.out.print(initialSpace);

//print the days of the month starting from 1
for (int i = 0, dayOfMonth = 1; dayOfMonth <= daysInMonth; i++) {
    for (int j = ((i == 0) ? dayOfWeek - 1 : 0); j < 7 && (dayOfMonth <= daysInMonth); j++) {
        System.out.printf("%2d ", dayOfMonth);
        dayOfMonth++;
    }
    System.out.println();
}

出力します。

February 2014
 S  M  T  W  T  F  S
                   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