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

Period และการคำนวณวันที่

บวกและลบวันที่

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

ปริมาณเวลาตามวันที่

ขณะที่ Duration ใช้วัดเวลาเป็นชั่วโมงและวินาที Period ใช้วัดปริมาณเป็นปี เดือน และวัน จึงเหมาะสำหรับการคำนวณตามปฏิทิน เช่น อายุและกำหนดส่ง

การเพิ่มวัน

LocalDate มี plusDays สำหรับเลื่อนวันที่ไปข้างหน้า โปรดจำไว้ว่าผลลัพธ์เป็นค่าใหม่ที่ไม่สามารถเปลี่ยนแปลงได้

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate start = LocalDate.of(2026, 5, 30);
        System.out.println(start.plusDays(10));
    }
}

การเพิ่มเดือนและปี

plusMonths และ plusYears ใช้เลื่อนวันที่เป็นหน่วยที่ใหญ่ขึ้น และจัดการจำนวนวันในแต่ละเดือนได้อย่างถูกต้อง

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate start = LocalDate.of(2026, 1, 31);
        System.out.println(start.plusMonths(1));
        System.out.println(start.plusYears(2));
    }
}

การลบวันที่

ใช้ minusDays, minusWeeks และเมธอดที่คล้ายกันเพื่อเลื่อนย้อนกลับไปในเวลา

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        System.out.println(date.minusWeeks(2));
    }
}

การสร้าง Period

สร้าง Period ด้วย of หรือเมธอดตัวสร้างสำหรับหน่วยเดียว เช่น ofMonths แล้วนำไปบวกกับวันที่

import java.time.LocalDate;
import java.time.Period;

public class Main {
    public static void main(String[] args) {
        Period p = Period.of(1, 2, 3);
        LocalDate date = LocalDate.of(2026, 1, 1);
        System.out.println(date.plus(p));
    }
}

Period ระหว่างวันที่

Period.between ใช้วัดช่วงห่างระหว่างวันที่สองวันในรูปปี เดือน และวัน

import java.time.LocalDate;
import java.time.Period;

public class Main {
    public static void main(String[] args) {
        LocalDate from = LocalDate.of(2020, 1, 15);
        LocalDate to = LocalDate.of(2026, 5, 30);
        Period p = Period.between(from, to);
        System.out.println(p.getYears() + "y " + p.getMonths() + "m " + p.getDays() + "d");
    }
}

การคำนวณอายุ

การใช้งาน Period.between ที่พบได้บ่อยคือการคำนวณอายุเป็นจำนวนปีเต็ม

import java.time.LocalDate;
import java.time.Period;

public class Main {
    public static void main(String[] args) {
        LocalDate birth = LocalDate.of(2000, 6, 15);
        LocalDate today = LocalDate.of(2026, 5, 30);
        int age = Period.between(birth, today).getYears();
        System.out.println(age);
    }
}

การนับจำนวนวันทั้งหมด

Period แบ่งช่วงห่างออกเป็นปี เดือน และวัน หากต้องการนับจำนวนวันรวมเพียงค่าเดียว ให้ใช้ ChronoUnit.DAYS.between แทน

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        LocalDate from = LocalDate.of(2026, 1, 1);
        LocalDate to = LocalDate.of(2026, 12, 31);
        long days = ChronoUnit.DAYS.between(from, to);
        System.out.println(days);
    }
}

ความยืดหยุ่นของ ChronoUnit

ChronoUnit สามารถนับได้หลายหน่วย ได้แก่ DAYS, WEEKS, MONTHS และ YEARS การเรียก between แต่ละครั้งจะส่งคืนตัวเลขเพียงหนึ่งค่า

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        LocalDate from = LocalDate.of(2026, 1, 1);
        LocalDate to = LocalDate.of(2026, 12, 31);
        System.out.println(ChronoUnit.WEEKS.between(from, to));
        System.out.println(ChronoUnit.MONTHS.between(from, to));
    }
}

การค้นหาวันในสัปดาห์ถัดไป

คลาส TemporalAdjusters มีการปรับวันที่อย่างชาญฉลาด เช่น การข้ามไปยังวันแรกของเดือนถัดไป

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        System.out.println(date.with(TemporalAdjusters.firstDayOfNextMonth()));
    }
}

Period กับ ChronoUnit

ใช้ Period เมื่อต้องการแยกผลลัพธ์เป็นปี เดือน และวันในรูปแบบที่เข้าใจได้สำหรับมนุษย์ ใช้ ChronoUnit.between เมื่อต้องการจำนวนรวมเพียงค่าเดียวในหน่วยเดียว

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

ทดสอบทักษะการคำนวณวันที่

สรุปทบทวน

คุณได้เรียนรู้การคำนวณวันที่ดังนี้

  • plusDays, plusMonths และ plusYears ใช้เลื่อนวันที่โดยไม่เปลี่ยนแปลงค่าเดิม
  • Period ใช้วัดปี เดือน และวัน จึงเหมาะสำหรับการคำนวณอายุ
  • Period.between แสดงช่วงห่างในรูปแบบปี เดือน และวันที่เข้าใจได้สำหรับมนุษย์
  • ChronoUnit.between แสดงจำนวนรวมเพียงค่าเดียวในหน่วยที่เลือก
  • TemporalAdjusters จัดการการข้ามวันที่อย่างชาญฉลาด เช่น การไปยังวันแรกของเดือนถัดไป

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

บทเรียน “Period และการคำนวณวันที่” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “Period และการคำนวณวันที่”

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

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

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

บทเรียน “Period และการคำนวณวันที่” ใช้เวลานานแค่ไหน

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

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

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

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

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