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 โดยเริ่มนับจากยุคเวลา 1970Durationคือปริมาณเวลาที่สร้างด้วย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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- LocalDate, LocalTime, LocalDateTime
- Instant และ Duration
- Period และการคำนวณวันที่
- การจัดรูปแบบด้วย DateTimeFormatter