คลาส GregorianCalendar รองรับปฏิทินมาตรฐาน (Julian และ Gregorian) สามารถสร้างอ็อบเจกต์ได้หลายวิธีผ่าน Constructor ต่างๆ
ตัวอย่าง 1: สร้างด้วยปี เดือน วัน
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String args[]) {
// สร้าง GregorianCalendar ด้วย ปี, เดือน(0-11), วัน
GregorianCalendar cal = new GregorianCalendar(2018, 6, 27);
System.out.println(cal); // toString() แสดงรายละเอียดทั้งหมด
System.out.println("Date: " + cal.get(Calendar.DATE));
System.out.println("Month: " + cal.get(Calendar.MONTH)); // 0-11
System.out.println("Year: " + cal.get(Calendar.YEAR));
}
}
ผลลัพธ์
java.util.GregorianCalendar[time=?,areFieldsSet=false,...,YEAR=2018,MONTH=6,DAY_OF_MONTH=27,...] Date: 27 Month: 6 Year: 2018
หมายเหตุ: เดือนใน Calendar เริ่มจาก 0 (มกราคม = 0) ดังนั้น 6 = กรกฎาคม
ตัวอย่าง 2: สร้างด้วย Locale
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
public class Test {
public static void main(String args[]) {
Locale locale = new Locale("en", "IN");
GregorianCalendar cal = new GregorianCalendar(locale);
System.out.println("Date: " + cal.get(Calendar.DATE));
System.out.println("Month: " + cal.get(Calendar.MONTH));
System.out.println("Year: " + cal.get(Calendar.YEAR));
}
}
ผลลัพธ์
Date: 7 Month: 10 Year: 2020
ตัวอย่าง 3: สร้างด้วย TimeZone
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Test {
public static void main(String args[]) {
TimeZone timeZone = TimeZone.getTimeZone("GMT+5:30");
GregorianCalendar cal = new GregorianCalendar(timeZone);
System.out.println("Date: " + cal.get(Calendar.DATE));
System.out.println("Month: " + cal.get(Calendar.MONTH));
System.out.println("Year: " + cal.get(Calendar.YEAR));
}
}
ผลลัพธ์
Date: 7 Month: 10 Year: 2020
ตัวอย่าง 4: ใช้ getInstance()
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String args[]) {
GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
System.out.println("Date: " + cal.get(Calendar.DATE));
System.out.println("Month: " + cal.get(Calendar.MONTH));
System.out.println("Year: " + cal.get(Calendar.YEAR));
}
}
ผลลัพธ์
Date: 7 Month: 10 Year: 2020
สรุป Constructor หลักของ GregorianCalendar
| Constructor | คำอธิบาย |
|---|---|
| GregorianCalendar() | วันที่/เวลาปัจจุบัน, Time Zone และ Locale เริ่มต้น |
| GregorianCalendar(int year, int month, int dayOfMonth) | กำหนดวันที่เฉพาะ (month 0-11) |
| GregorianCalendar(int year, int month, int dayOfMonth, int hour, int minute) | กำหนดวันที่และเวลา |
| GregorianCalendar(int year, int month, int dayOfMonth, int hour, int minute, int second) | กำหนดวันที่และเวลารวมวินาที |
| GregorianCalendar(Locale locale) | วันที่ปัจจุบันกับ Locale ที่ระบุ |
| GregorianCalendar(TimeZone zone) | วันที่ปัจจุบันกับ Time Zone ที่ระบุ |
| GregorianCalendar(TimeZone zone, Locale locale) | กำหนด Time Zone และ Locale ทั้งคู่ |
⚠️ คำเตือน
GregorianCalendar เป็น Legacy Class (Java 1.1) แนะนำให้ใช้ java.time.LocalDate, LocalDateTime, ZonedDateTime (Java 8+) แทน ซึ่งใช้งานง่ายกว่า และ thread-safe