Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีสร้าง Date จาก Year, Month, Day ใน Java


มีหลายวิธีสร้างอ็อบเจกต์ 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ใช่แนะนำสำหรับวันที่+เวลา
GregorianCalendarCalendarไม่Legacy
SimpleDateFormat.parse()Dateไม่Legacy

⚠️ จดจำ: เดือนใน Calendar เริ่มจาก 0 (ม.ค.=0) แต่ LocalDate เริ่มจาก 1 (ม.ค.=1)