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

Time Temporal Fields ใน Java คืออะไร


Temporal Field คือฟิลด์ของวันที่-เวลา เช่น hour-of-minute หรือ nano-of-second ฟิลด์เหล่านี้ถูกแทนด้วยอินเทอร์เฟซ TemporalField และคลาส ChronoField implement อินเทอร์เฟซนี้

รายการ Time Temporal Fields ที่ ChronoField รองรับ

Fieldคำอธิบาย
CLOCK_HOUR_OF_AMPMชั่วโมงของวันแบบนาฬิกา (AM/PM) 1-12
AMPM_OF_DAYAM/PM ของวัน (0=AM, 1=PM)
CLOCK_HOUR_OF_DAYชั่วโมงของวันแบบนาฬิกา 1-24
HOUR_OF_AMPMชั่วโมงของวัน (AM/PM) 0-11
HOUR_OF_DAYชั่วโมงของวัน 0-23
INSTANT_SECONDSวินาทีจาก epoch
MICRO_OF_DAYไมโครวินาทีของวัน
MICRO_OF_SECONDไมโครวินาทีของวินาที
MILLI_OF_DAYมิลลิวินาทีของวัน
MILLI_OF_SECONDมิลลิวินาทีของวินาที
MINUTE_OF_DAYนาทีของวัน
MINUTE_OF_HOURนาทีของชั่วโมง
MONTH_OF_YEARเดือนของปี
NANO_OF_DAYแนนาวินาทีของวัน
NANO_OF_SECONDแนนาวินาทีของวินาที
OFFSET_SECONDSออฟเซตจาก UTC/Greenwich
PROLEPTIC_MONTHเดือนโพรเลปติก (เดือนนับจาก epoch)
SECOND_OF_DAYวินาทีของวัน
SECOND_OF_MINUTEวินาทีของนาที

ตัวอย่างการใช้งานกับ LocalTime

import java.time.LocalTime;
import java.time.temporal.ChronoField;

public class Demo {
    public static void main(String args[]) {
        LocalTime lTime = LocalTime.now();
        System.out.println("เวลาปัจจุบัน: " + lTime);
        
        int field = lTime.get(ChronoField.CLOCK_HOUR_OF_AMPM);
        System.out.println("ชั่วโมงของวัน (AM/PM): " + field);
        
        field = lTime.get(ChronoField.AMPM_OF_DAY);
        System.out.println("AM หรือ PM: " + field);
        
        field = lTime.get(ChronoField.CLOCK_HOUR_OF_DAY);
        System.out.println("ชั่วโมงของวัน (1-24): " + field);
        
        long epoch = lTime.getLong(ChronoField.MINUTE_OF_DAY);
        System.out.println("นาทีของวัน: " + epoch);
        
        field = lTime.get(ChronoField.MINUTE_OF_HOUR);
        System.out.println("นาทีของชั่วโมง: " + field);
        
        field = lTime.get(ChronoField.SECOND_OF_DAY);
        System.out.println("วินาทีของวัน: " + field);
        
        field = lTime.get(ChronoField.SECOND_OF_MINUTE);
        System.out.println("วินาทีของนาที: " + field);
    }
}

ผลลัพธ์ตัวอย่าง

เวลาปัจจุบัน: 17:02:46.294
ชั่วโมงของวัน (AM/PM): 5
AM หรือ PM: 1
ชั่วโมงของวัน (1-24): 17
นาทีของวัน: 1022
นาทีของชั่วโมง: 2
วินาทีของวัน: 61366
วินาทีของนาที: 46

คำอธิบายค่าที่ได้

  • CLOCK_HOUR_OF_AMPM = 5: เวลา 17:02 คือ 5 โมงเย็น (PM)
  • AMPM_OF_DAY = 1: 1 = PM, 0 = AM
  • CLOCK_HOUR_OF_DAY = 17: แบบ 24 ชั่วโมง
  • MINUTE_OF_DAY = 1022: 17 ชม. × 60 + 2 นาที = 1022
  • SECOND_OF_DAY = 61366: 1022 นาที × 60 + 46 วินาที = 61366

ความแตกต่างระหว่าง HOUR และ CLOCK_HOUR

Fieldช่วงค่าคำอธิบาย
HOUR_OF_AMPM0-110 = 12 AM, 11 = 11 AM/PM
CLOCK_HOUR_OF_AMPM1-121 = 1 AM/PM, 12 = 12 AM/PM
HOUR_OF_DAY0-230 = เที่ยงคืน, 23 = 11 โมงเย็น
CLOCK_HOUR_OF_DAY1-241 = 1 โมงเช้า, 24 = เที่ยงคืน