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)
, ทำให้โค้ดของคุณสะอาดขึ้น
ดูเพิ่มเติม
- ภาพรวมแพ็กเกจ
java.time
: เอกสาร Oracle - การจัดการเขตเวลาด้วย
ZonedDateTime
: Oracle ZonedDateTime - รูปแบบวันที่และเวลาอย่างเป็นทางการสำหรับ
java.time.format.DateTimeFormatter
: Oracle DateTimeFormatter