การคำนวณวันที่ในอนาคตหรืออดีต

Java:
การคำนวณวันที่ในอนาคตหรืออดีต

วิธีการ:

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

public class DateCalculation {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        // เพิ่มวันที่ 10 วันในวันปัจจุบัน
        LocalDate futureDate = today.plusDays(10);
        System.out.println("วันที่ในอนาคต: " + futureDate);

        // ลบออก 2 เดือนจากวันปัจจุบัน
        LocalDate pastDate = today.minus(2, ChronoUnit.MONTHS);
        System.out.println("วันที่ในอดีต: " + pastDate);
    }
}

ผลลัพธ์อาจมีลักษณะดังนี้:

วันที่ในอนาคต: 2023-04-30
วันที่ในอดีต: 2023-02-20

ตรวจสอบอย่างละเอียด

ก่อน Java 8, การจัดการกับวันที่เป็นเรื่องยาก คลาสเก่าๆ เช่น java.util.Date และ java.util.Calendar เต็มไปด้วยบั๊กและไม่เป็นมิตรต่อผู้ใช้ แพ็กเกจ java.time ที่นำเสนอใน Java 8 ได้แก้ไขปัญหานี้ด้วยคลาสที่ได้รับการคิดค้นอย่างดี เช่น LocalDate, LocalTime, และ ZonedDateTime

มีทางเลือกอื่นหรือไม่? ในยุคก่อน Java 8, ไลบรารีภายนอกเช่น Joda-Time เป็นที่นิยม ในปัจจุบัน, คุณยังสามารถใช้งานได้, แต่แนะนำให้ใช้ java.time มาตรฐานเนื่องจากเป็นส่วนหนึ่งของ Java อย่างเป็นทางการและจัดการเวลาออมแสง, เขตเวลา, และปีใหญ่ได้อย่างสง่างาม

เมื่อเขียนคำนวณวันที่, พิจารณาเขตเวลาหากบริบทของคุณต้องการ เพื่อ UTC, ใช้ Instant แทน LocalDate สำหรับเขตเวลาเฉพาะ, คุณมักจะใช้ ZonedDateTime จำไว้ว่า, การดำเนินการวัน-เวลาสามารถเชื่อมโยงกันได้, เช่น date.minusWeeks(1).plusHours(3), ทำให้โค้ดของคุณสะอาดขึ้น

ดูเพิ่มเติม

  1. ภาพรวมแพ็กเกจ java.time: เอกสาร Oracle
  2. การจัดการเขตเวลาด้วย ZonedDateTime: Oracle ZonedDateTime
  3. รูปแบบวันที่และเวลาอย่างเป็นทางการสำหรับ java.time.format.DateTimeFormatter: Oracle DateTimeFormatter