Temporal Field คือฟิลด์ของวันที่-เวลา เช่น month-of-year (เดือนของปี) หรือ hour-of-minute (ชั่วโมงของนาที) ฟิลด์เหล่านี้ถูกแทนด้วยอินเทอร์เฟซ TemporalField และคลาส ChronoField เป็นการ implement อินเทอร์เฟซนี้
รายการ Date Temporal Fields ที่ ChronoField รองรับ
| Field | คำอธิบาย |
|---|---|
| ALIGNED_DAY_OF_WEEK_IN_MONTH | วันของสัปดาห์ภายในเดือน |
| ALIGNED_DAY_OF_WEEK_IN_YEAR | วันที่จัดเรียงของสัปดาห์ในปี |
| ALIGNED_WEEK_OF_MONTH | สัปดาห์ที่จัดเรียงของเดือน |
| ALIGNED_WEEK_OF_YEAR | สัปดาห์ที่จัดเรียงของปี |
| DAY_OF_MONTH | วันของเดือน (1-31) |
| DAY_OF_WEEK | วันของสัปดาห์ (1=จันทร์ ... 7=อาทิตย์) |
| DAY_OF_YEAR | วันของปี (1-366) |
| EPOCH_DAY | จำนวนวันจาก epoch (1 ม.ค. 1970) |
| ERA | ยุค (0=BC, 1=AD) |
| YEAR | ปี |
| YEAR_OF_ERA | ปีในยุคนั้นๆ |
ตัวอย่างการใช้งานกับ LocalDate
import java.time.LocalDate;
import java.time.temporal.ChronoField;
public class Demo {
public static void main(String args[]) {
LocalDate lDate = LocalDate.now();
int field = lDate.get(ChronoField.DAY_OF_MONTH);
System.out.println("วันของเดือน: " + field);
field = lDate.get(ChronoField.DAY_OF_WEEK);
System.out.println("วันของสัปดาห์: " + field);
field = lDate.get(ChronoField.DAY_OF_YEAR);
System.out.println("วันของปี: " + field);
long epoch = lDate.getLong(ChronoField.EPOCH_DAY);
System.out.println("Epoch Day: " + epoch);
field = lDate.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH);
System.out.println("สัปดาห์ในเดือน: " + field);
field = lDate.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR);
System.out.println("วันของสัปดาห์ในปี: " + field);
field = lDate.get(ChronoField.ERA);
System.out.println("ยุค: " + field);
}
}
ผลลัพธ์ตัวอย่าง
วันของเดือน: 11 วันของสัปดาห์: 3 วันของปี: 316 Epoch Day: 18577 สัปดาห์ในเดือน: 4 วันของสัปดาห์ในปี: 1 ยุค: 1
ตัวอย่างการใช้งานกับ Year, Month, DayOfWeek
import java.time.DayOfWeek;
import java.time.LocalTime;
import java.time.Month;
import java.time.Year;
import java.time.temporal.ChronoField;
public class Demo {
public static void main(String args[]) {
LocalTime lTime = LocalTime.now();
System.out.println("เวลาปัจจุบัน: " + lTime);
int field = Year.of(2019).get(ChronoField.YEAR);
System.out.println("ปี: " + field);
field = Month.of(8).get(ChronoField.MONTH_OF_YEAR);
System.out.println("เดือน: " + field);
field = DayOfWeek.of(3).get(ChronoField.DAY_OF_WEEK);
System.out.println("วันของสัปดาห์: " + field);
}
}
ผลลัพธ์
เวลาปัจจุบัน: 20:01:43.171 ปี: 2019 เดือน: 8 วันของสัปดาห์: 3
หมายเหตุสำคัญ
- ใช้
get()สำหรับค่าที่พอดีใน int (ส่วนใหญ่) - ใช้
getLong()สำหรับค่าที่อาจใหญ่กว่า int เช่น EPOCH_DAY - LocalDate, LocalTime, LocalDateTime, Year, Month, DayOfWeek ทั้งหมดรองรับ TemporalField