0Pricing
Java Academy · บทเรียน

Instant และ Duration

เวลาเครื่องและช่วงเวลา

Instant และ Duration เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

เวลาเครื่อง

ขณะที่ LocalDateTime ใช้กับปฏิทินของมนุษย์ Instant ใช้แทนจุดเวลาที่แม่นยำบนเส้นเวลาของเครื่อง โดยวัดจากจุดเริ่มต้นยุควันที่ 1970-01-01 ในเขตเวลา UTC

Duration ใช้แทนช่วงเวลาระหว่างจุดเวลาสองจุด

การสร้าง Instant

Instant.now() บันทึกช่วงเวลาปัจจุบัน สำหรับผลลัพธ์ที่คาดเดาได้ เราสามารถสร้างค่าหนึ่งจากวินาทีของยุคเวลาที่กำหนดไว้ตายตัวด้วย ofEpochSecond

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant fixed = Instant.ofEpochSecond(1000000000);
        System.out.println(fixed);
    }
}

วินาทีและมิลลิวินาทีของยุคเวลา

คุณสามารถอ่านค่าพื้นฐานของยุคเวลาได้ด้วย getEpochSecond และ toEpochMilli ซึ่งมีประโยชน์สำหรับประทับเวลาและการจัดเก็บข้อมูล

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant t = Instant.ofEpochSecond(1500000000);
        System.out.println(t.getEpochSecond());
        System.out.println(t.toEpochMilli());
    }
}

การสร้าง Duration

สร้าง Duration ด้วยเมธอดตัวสร้าง เช่น ofHours, ofMinutes และ ofSeconds

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        Duration d = Duration.ofMinutes(90);
        System.out.println(d);
        System.out.println(d.toHours());
    }
}

Duration ระหว่างจุดเวลา

Duration.between ใช้วัดช่วงห่างระหว่างจุดเวลาสองจุด ซึ่งเป็นวิธีมาตรฐานในการจับเวลาว่าสิ่งหนึ่งใช้เวลานานเท่าใด

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

public class Main {
    public static void main(String[] args) {
        Instant start = Instant.ofEpochSecond(1000);
        Instant end = Instant.ofEpochSecond(1075);
        Duration elapsed = Duration.between(start, end);
        System.out.println(elapsed.getSeconds());
    }
}

การแปลง Duration

Duration สามารถรายงานค่าในหน่วยต่าง ๆ ได้ด้วย toMinutes, toHours, toDays และ toMillis

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        Duration d = Duration.ofSeconds(7320);
        System.out.println(d.toMinutes());
        System.out.println(d.toHours());
    }
}

การเพิ่มเวลาให้ Instant

เลื่อนจุดเวลาไปข้างหน้าหรือย้อนกลับด้วย plus และ minus โดยส่ง Duration เข้าไป

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

public class Main {
    public static void main(String[] args) {
        Instant now = Instant.ofEpochSecond(1000);
        Instant later = now.plus(Duration.ofHours(2));
        System.out.println(later.getEpochSecond());
    }
}

เมธอดช่วยของ plus

เมธอดอำนวยความสะดวก เช่น plusSeconds และ plusMillis ช่วยให้คุณไม่ต้องสร้าง Duration เองเมื่อต้องการเลื่อนเวลาอย่างง่าย

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant t = Instant.ofEpochSecond(0);
        System.out.println(t.plusSeconds(3600).getEpochSecond());
    }
}

การเปรียบเทียบจุดเวลา

ใช้ isBefore และ isAfter เพื่อจัดลำดับจุดเวลาสองจุดบนเส้นเวลา

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant a = Instant.ofEpochSecond(100);
        Instant b = Instant.ofEpochSecond(200);
        System.out.println(a.isBefore(b));
    }
}

Duration ติดลบ

หากเวลาสิ้นสุดอยู่ก่อนเวลาเริ่มต้น ช่วงเวลาจะมีค่าเป็นลบ เมธอด isNegative และ abs ช่วยจัดการกรณีนี้ได้

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

public class Main {
    public static void main(String[] args) {
        Duration d = Duration.between(Instant.ofEpochSecond(200), Instant.ofEpochSecond(100));
        System.out.println(d.isNegative());
        System.out.println(d.abs().getSeconds());
    }
}

Instant กับ LocalDateTime

ใช้ Instant สำหรับประทับเวลา การบันทึกเหตุการณ์ และการวัดเวลาที่ผ่านไป เนื่องจากเป็นเวลา UTC ที่ไม่กำกวม ส่วน LocalDateTime เหมาะสำหรับค่าวันที่ตามปฏิทินของมนุษย์ ซึ่งจัดการเขตเวลาในส่วนอื่น

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับ Instant และ Duration

สรุปทบทวน

คุณได้เรียนรู้เกี่ยวกับเวลาเครื่องดังนี้

  • Instant คือจุดเวลาที่แม่นยำบนเส้นเวลา UTC โดยเริ่มนับจากยุคเวลา 1970
  • Duration คือปริมาณเวลาที่สร้างด้วย ofHours และเมธอดที่คล้ายกัน
  • Duration.between ใช้วัดเวลาที่ผ่านไป
  • เลื่อนจุดเวลาด้วย plus และ minus
  • ใช้ Instant สำหรับประทับเวลา และใช้ LocalDateTime สำหรับวันที่ตามปฏิทินของมนุษย์

คำถามที่พบบ่อย

บทเรียน “Instant และ Duration” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Instant และ Duration” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Instant และ Duration”

เวลาเครื่องและช่วงเวลา คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “Instant และ Duration” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. LocalDate, LocalTime, LocalDateTime
  2. Instant และ Duration
  3. Period และการคำนวณวันที่
  4. การจัดรูปแบบด้วย DateTimeFormatter
← กลับไปที่ Java Academy