นาฬิกาทรายและไทม์ไลน์บนโต๊ะมิ้นต์มีเส้นเดดไลน์สีอำพัน

Java Duration.between: วัดเวลาที่เหลือถึงเดดไลน์อย่างตรงไปตรงมา

น้องกายEngineering

เวลาผมทำ SLA หรือคูลดาวน์ในเซอร์วิส อยากได้ตัวเลข “เหลือกี่วินาที” โดยไม่คำนวณ epoch เองครับ

Duration.between(start, end) คืนระยะเวลาระหว่างสอง Temporal ถ้าย้อนเวลากลับจะได้ค่าติดลบ — เรียก abs() ถ้าต้องการความยาวบวกเสมอ

import java.time.Duration;
import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant start = Instant.parse("2026-09-17T06:00:00Z");
        Instant deadline = Instant.parse("2026-09-17T06:05:00Z");
        Duration left = Duration.between(start, deadline);
        assert left.toMinutes() == 5;
        assert left.getSeconds() == 300;
        System.out.println("duration tests passed");
    }
}

ใช้คู่กับ Instant.now() เพื่อเช็กว่าเลยเดดไลน์หรือยัง (isNegative())

Recap

  • อ่าน Duration.between
  • เก็บเดดไลน์เป็น Instant ไม่ใช่สตริงลอย ๆ
  • เช็ก isNegative() เมื่อเลยกำหนด
  • อย่าผสม LocalDateTime คนละโซนโดยไม่แปลง