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

ความสำคัญของเมธอด ofInstant() ใน Java 9

ใน Java 9 เมธอด ofInstant() ถูกนำมารวมสำหรับการแปลง เป็น static method ของคลาส LocalDate LocalTime และ LocalDateTime เมธอดนี้แปลง object java.time.Instant เป็น LocalDate ต้องการ time zone ในรูปของ java.time.ZoneId

ไวยากรณ์

public static LocalTime ofInstant(Instant instant, ZoneId zone)
public static LocalDate ofInstant(Instant instant, ZoneId zone)
public static LocalDateTime ofInstant(Instant instant, ZoneId zone)

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

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Instant;
import java.time.ZoneId;

public class OfInstantMethodTest {
    public static void main(String args[]) {
        Instant instant = Instant.parse("2020-02-05T02:35:15.245Z");
        System.out.println("Instant: " + instant);
        
        LocalDate ld = LocalDate.ofInstant(instant, ZoneId.of("Asia/Kolkata"));
        System.out.println("LocalDate: " + ld);
        
        LocalTime lt = LocalTime.ofInstant(instant, ZoneId.of("Asia/Kolkata"));
        System.out.println("LocalTime: " + lt);
        
        LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Kolkata"));
        System.out.println("LocalDateTime: " + ldt);
    }
}

ผลลัพธ์

Instant: 2020-02-05T02:35:15.245Z
LocalDate: 2020-02-05
LocalTime: 08:05:15.245
LocalDateTime: 2020-02-05T08:05:15.245

คำอธิบาย

  • Instant คือจุดบน timeline แบบ UTC (Z = Zulu time = UTC)
  • ZoneId.of("Asia/Kolkata") คือโซนเวลา UTC+5:30 (India)
  • Instant 02:35 UTC + 5:30 = 08:05 Local time
  • LocalDate, LocalTime, LocalDateTime ทั้งหมดแสดงเวลาในโซน Asia/Kolkata

เมธอดที่เกี่ยวข้อง

  • Instant.atZone(ZoneId) - คืน ZonedDateTime
  • ZonedDateTime.toLocalDate() - ดึง LocalDate
  • ZonedDateTime.toLocalTime() - ดึง LocalTime
  • ZonedDateTime.toLocalDateTime() - ดึง LocalDateTime

ofInstant() ให้วิธีสร้าง LocalDate/Time/DateTime จาก Instant โดยตรง สะดวกกว่าเดิมที่ต้องผ่าน ZonedDateTime