มีหลายวิธีสร้างอ็อบเจกต์ Date จากค่าปี เดือน วัน แยกกัน
วิธีที่ 1: ใช้ LocalDate.of() (Java 8+) - แนะนำที่สุด
เมธอด static of() รับ year, month, dayOfMonth คืนค่า LocalDate
import java.time.LocalDate;
public class Test {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2014, 9, 11);
System.out.println("Date Value: " + date);
}
}
ผลลัพธ์
Date Value: 2014-09-11
วิธีที่ 2: ใช้ GregorianCalendar (Legacy)
Constructor รับ year, month(0-11), dayOfMonth
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
public static void main(String args[]) {
// เดือน 7 = สิงหาคม (0-based)
Calendar cal = new GregorianCalendar(2020, 7, 18);
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH); // 0-based
int year = cal.get(Calendar.YEAR);
System.out.println("Day: " + day);
System.out.println("Month: " + month);
System.out.println("Year: " + year);
}
}
ผลลัพธ์
Day: 18 Month: 7 Year: 2020
วิธีที่ 3: ใช้ SimpleDateFormat Parse (Legacy)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String args[]) throws ParseException {
String dateString = "2007-25-06";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-MM");
Date date = formatter.parse(dateString);
System.out.println("Date value: " + date);
}
}
ผลลัพธ์
Date value: Mon Jun 25 00:00:00 IST 2007
วิธีที่ 4: ใช้ LocalDateTime.of() (Java 8+) - เมื่อต้องการเวลาด้วย
import java.time.LocalDateTime;
public class Test {
public static void main(String[] args) {
// of(year, month, day, hour, minute, second)
LocalDateTime dt = LocalDateTime.of(2014, 9, 11, 10, 30, 0);
System.out.println("DateTime: " + dt);
}
}
ผลลัพธ์
DateTime: 2014-09-11T10:30
ตารางเปรียบเทียบ
| วิธี | คืนค่า | Thread-Safe | คำแนะนำ |
|---|---|---|---|
| LocalDate.of() | LocalDate | ใช่ | แนะนำ #1 สำหรับวันที่อย่างเดียว |
| LocalDateTime.of() | LocalDateTime | ใช่ | แนะนำสำหรับวันที่+เวลา |
| GregorianCalendar | Calendar | ไม่ | Legacy |
| SimpleDateFormat.parse() | Date | ไม่ | Legacy |