Java日曆類(GregorianCalendar和Calendar)的簡單例子
阿新 • • 發佈:2019-02-20
【例1】列印系統當前日曆月份資訊。
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* 列印當前月份日曆
*
* @date 2017-07-08
* @author HaleyTiger
*/
public class CalendarTest {
public static void main(String[] args) {
// 設定日曆的顯示的地區(根據自己的需要寫)
Locale.setDefault(Locale.ENGLISH);
// GregorianCalendar是Calendar的子類
GregorianCalendar gc = new GregorianCalendar();
int today = gc.get(Calendar.DAY_OF_MONTH);
int month = gc.get(Calendar.MONTH);
// 設定月份的起始日期為1
gc.set(Calendar.DAY_OF_MONTH, 1);
// 獲取一週中的第幾天
int weekday = gc.get(Calendar.DAY_OF_WEEK);
// 獲取一週中的第一天
int firstDayOfWeek = gc.getFirstDayOfWeek();
// 計算月份第一行的縮排數
int indent = 0;// 縮排數
while (weekday != firstDayOfWeek) {
indent++;
gc.add(Calendar.DAY_OF_MONTH, -1);// 日期減1
weekday = gc.get (Calendar.DAY_OF_WEEK);
}
// 列印星期名
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
do {
System.out.printf("%4s", weekdayNames[weekday]);
gc.add(Calendar.DAY_OF_MONTH, 1);
weekday = gc.get(Calendar.DAY_OF_WEEK);
} while (weekday != firstDayOfWeek);
System.out.println();
// 列印日曆第一行的縮排空格
for (int i = 0; i <= indent; i++) {
System.out.print(" ");// 兩個空格
}
// 設定月份的起始日期為1
gc.set(Calendar.DAY_OF_MONTH, 1);
// 列印日期
do {
// 列印天數
int day = gc.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
// 用“*”標記今天
if (day == today) {
System.out.print("*");
} else {
System.out.print(" ");
}
gc.add(Calendar.DAY_OF_MONTH, 1);// 天數加1
weekday = gc.get(Calendar.DAY_OF_WEEK);
// 列印一週後換行
if (weekday == firstDayOfWeek) {
System.out.println();
}
} while (gc.get(Calendar.MONTH) == month);// 到下個月結束
}
}