Temporal Field คือฟิลด์ของวันที่-เวลา เช่น month-of-year หรือ hour-of-minute ถูกแทนด้วยอินเทอร์เฟซ TemporalField และคลาส ChronoField implement อินเทอร์เฟซนี้
คลาส LocalDateTime มีเมธอด get() และ getLong() ที่รับ Temporal Field เป็นพารามิเตอร์ เพื่อดึงค่าของฟิลด์นั้นๆ จากอ็อบเจกต์
ตัวอย่างที่ 1: ดึงค่า Date Temporal Fields จาก LocalDateTime
import java.time.LocalDateTime;
import java.time.temporal.ChronoField;
public class Demo {
public static void main(String args[]) {
LocalDateTime lDate = LocalDateTime.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);
}
}
ผลลัพธ์
วันของเดือน: 25 วันของสัปดาห์: 5 วันของปี: 237 Epoch Day: 17403 สัปดาห์ในเดือน: 4 วันของสัปดาห์ในปี: 6 ยุค: 1
ตัวอย่างที่ 2: ดึงค่า Time Temporal Fields จาก LocalDateTime
import java.time.LocalDateTime;
import java.time.temporal.ChronoField;
public class CreateDateTime {
public static void main(String args[]) {
LocalDateTime lDateTime = LocalDateTime.now();
System.out.println("วันเวลาปัจจุบัน: " + lDateTime);
int field = lDateTime.get(ChronoField.CLOCK_HOUR_OF_AMPM);
System.out.println("ชั่วโมงของวัน (AM/PM): " + field);
field = lDateTime.get(ChronoField.AMPM_OF_DAY);
System.out.println("AM หรือ PM: " + field);
field = lDateTime.get(ChronoField.CLOCK_HOUR_OF_DAY);
System.out.println("ชั่วโมงของวัน (1-24): " + field);
long epoch = lDateTime.getLong(ChronoField.MINUTE_OF_DAY);
System.out.println("นาทีของวัน: " + epoch);
field = lDateTime.get(ChronoField.MINUTE_OF_HOUR);
System.out.println("นาทีของชั่วโมง: " + field);
field = lDateTime.get(ChronoField.SECOND_OF_DAY);
System.out.println("วินาทีของวัน: " + field);
field = lDateTime.get(ChronoField.SECOND_OF_MINUTE);
System.out.println("วินาทีของนาที: " + field);
}
}
ผลลัพธ์
วันเวลาปัจจุบัน: 2020-11-11T14:58:22.680 ชั่วโมงของวัน (AM/PM): 2 AM หรือ PM: 1 ชั่วโมงของวัน (1-24): 14 นาทีของวัน: 898 นาทีของชั่วโมง: 58 วินาทีของวัน: 53902 วินาทีของนาที: 22
สรุป: LocalDateTime รองรับทั้ง Date และ Time Fields
LocalDateTime เป็นคลาสที่รวมวันที่และเวลาไว้ด้วยกัน จึงสามารถเข้าถึง ทั้ง Date Temporal Fields และ Time Temporal Fields ได้ทั้งหมด ทำให้สะดวกสำหรับการทำงานกับวันที่-เวลาแบบรวม