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

การใช้งานเมธอด toEpochSecond() ใน Java 9

ใน Java 9 คลาส LocalDate มีเมธอด toEpochSecond() เพื่อแปลง local date เป็น epoch seconds เมธอด toEpochSecond() แปลง LocalDate เป็นจำนวนวินาทีนับจาก epoch 1970-01-01T00:00:00Z LocalDate สามารถรวมกับ เวลา และ zone offset ที่กำหนด เพื่อคำนวณวินาทีนับจาก 1970-01-01T00:00:00Z

ไวยากรณ์

public long toEpochSecond(LocalTime time, ZoneOffset offset)

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

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneOffset;

public class ToEpochSecondMethodTest {
    public static void main(String args[]) {
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        System.out.println("LocalDate toEpochSecond : " + date.toEpochSecond(time, ZoneOffset.of("Z")));
        System.out.println("LocalTime toEpochSecond : " + time.toEpochSecond(date, ZoneOffset.of("Z")));
    }
}

ผลลัพธ์

LocalDate toEpochSecond : 1583496984
LocalTime toEpochSecond : 1583496984

คำอธิบาย

  • LocalDate.toEpochSecond(time, offset) - รวม date + time + offset คำนวณ epoch seconds
  • LocalTime.toEpochSecond(date, offset) - เมธอดเดียวกัน แต่เรียกจาก LocalTime (Java 9 เพิ่มใน LocalTime ด้วย)
  • ZoneOffset.of("Z") = UTC (offset 0)
  • ทั้งสองวิธีให้ผลลัพธ์เท่ากัน เพราะคำนวณจาก date+time+offset เดียวกัน

การใช้งานจริง

// แปลงวันที่เฉพาะเจาะจง เป็น epoch seconds
LocalDate specificDate = LocalDate.of(2020, 1, 1);
LocalTime specificTime = LocalTime.of(0, 0, 0);
long epochSec = specificDate.toEpochSecond(specificTime, ZoneOffset.UTC);
// epochSec = 1577836800

// ใช้กับ ZoneOffset อื่น
long epochSecBKK = specificDate.toEpochSecond(specificTime, ZoneOffset.of("+07:00"));
// epochSecBKK = 1577811600 (น้อยกว่า 7 ชั่วโมง = 25200 วินาที)

toEpochSecond() ช่วยแปลงวันที่-เวลาในโซนต่างๆ เป็น timestamp มาตรฐาน (epoch seconds) สำหรับเก็บใน database หรือส่งผ่าน network