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

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


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