Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Date และ Time Temporal Field ใน Java


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 ได้ทั้งหมด ทำให้สะดวกสำหรับการทำงานกับวันที่-เวลาแบบรวม