Я хочу понять этот код. Я знаю, что этот код дает мне календарь, когда я ввожу год, месяц и день. Затем программа показывает календарь этого месяца, кроме того, код показывает мне время и дату сейчас. Но я хочу понять, как это работает?
import java.util.*;
import java.text.SimpleDateFormat;
public class Calendar3
{
private static void doSimpleDateFormat() {
Calendar now = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.print(" \n It is now : " + formatter.format(now.getTime()));
System.out.println();
}
public static void CalendarDemo(int Year, int Month, int Date) {
GregorianCalendar a = new GregorianCalendar();
a.set(Calendar.YEAR, Year);
a.set(Calendar.MONTH, (Month - 1));
a.set(Calendar.DAY_OF_MONTH, 1);
int weekday = a.get(Calendar.DAY_OF_WEEK);
int month = a.get(Calendar.MONTH);
System.out.println("'\n' YEAR : " + Year);
switch (month) {
case 0:
System.out.println();
System.out.println(" JANUARY ");
System.out.println();
break;
case 1:
System.out.println();
System.out.println(" FEBRUARY ");
System.out.println();
break;
case 2:
System.out.println();
System.out.println(" MARCH ");
System.out.println();
break;
case 3:
System.out.println();
System.out.println(" APRIL ");
System.out.println();
break;
case 4:
System.out.println();
System.out.println(" MAY ");
System.out.println();
break;
case 5:
System.out.println();
System.out.println(" JUNE ");
System.out.println();
break;
case 6:
System.out.println();
System.out.println(" JULY ");
System.out.println();
break;
case 7:
System.out.println();
System.out.println(" AUGUST ");
System.out.println();
break;
case 8:
System.out.println();
System.out.println(" SEPTEMBER ");
System.out.println();
break;
case 9:
System.out.println();
System.out.println(" OCTOBER ");
System.out.println();
break;
case 10:
System.out.println();
System.out.println(" NOVEMBER ");
System.out.println();
break;
case 11:
System.out.println();
System.out.println(" DECEMBER ");
System.out.println();
break;
}
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
for (int i = Calendar.SUNDAY; i < weekday; i++) {
System.out.print(" ");
}
do {
int day = a.get(Calendar.DAY_OF_MONTH);
if (day < 10) {
System.out.print(" " + day);
} else if (day >= 10) {
System.out.print(day);
}
if (day == Date) {
System.out.print("* ");
} else {
System.out.print(" ");
}
if (weekday == Calendar.SATURDAY) {
System.out.println();
}
a.add(Calendar.DAY_OF_MONTH, 1);
weekday = a.get(Calendar.DAY_OF_WEEK);
}
while (a.get(Calendar.MONTH) == month);
if (weekday != Calendar.SUNDAY) {
System.out.println();
}
System.out.println();
System.out.println("Note: '*' over any number is your desired number");
System.out.println();
doSimpleDateFormat();
}
}