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

วิธีสร้าง Date Object ใน Java


มีหลายวิธีสร้างอ็อบเจกต์ Date ใน Java ขึ้นอยู่กับความต้องการ

วิธีที่ 1: ใช้ java.util.Date Constructor (Current Time)

import java.util.Date;

public class CreateDate {
    public static void main(String args[]) {
        Date date = new Date();  // เวลาปัจจุบัน
        System.out.print(date);
    }
}

ผลลัพธ์

Thu Nov 02 15:43:01 IST 2018

วิธีที่ 2: ใช้ SimpleDateFormat.parse() (Specific Date - Legacy)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String args[]) throws ParseException {
        String dateString = "26-09-1989";
        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
        Date date = formatter.parse(dateString);
        System.out.println("Date value: " + date);
    }
}

ผลลัพธ์

Date value: Tue Sep 26 00:00:00 IST 1989

วิธีที่ 3: ใช้ LocalDate (Java 8+) - แนะนำสำหรับวันที่อย่างเดียว

import java.time.LocalDate;

public class Test {
    public static void main(String args[]) {
        // of(year, month, day)
        LocalDate date1 = LocalDate.of(2014, 9, 11);
        System.out.println(date1);
        
        // parse(ISO string)
        LocalDate date2 = LocalDate.parse("2007-12-03");
        System.out.println(date2);
        
        // now()
        LocalDate date3 = LocalDate.now();
        System.out.println(date3);
    }
}

ผลลัพธ์

2014-09-11
2007-12-03
2020-11-05

วิธีที่ 4: ใช้ LocalDateTime (Java 8+) - วันที่ + เวลา

import java.time.LocalDateTime;

LocalDateTime dt1 = LocalDateTime.of(2014, 9, 11, 10, 30);
LocalDateTime dt2 = LocalDateTime.parse("2007-12-03T10:30:00");
LocalDateTime dt3 = LocalDateTime.now();

วิธีที่ 5: ใช้ ZonedDateTime (Java 8+) - วันที่ + เวลา + Time Zone

import java.time.ZonedDateTime;
import java.time.ZoneId;

ZonedDateTime zdt = ZonedDateTime.of(2014, 9, 11, 10, 30, 0, 0, ZoneId.of("Asia/Bangkok"));

ตารางสรุป: เลือกใช้คลาสไหน?

ความต้องการคลาสแนะนำเวอร์ชันThread-Safe
วันที่อย่างเดียวLocalDate8+ใช่
เวลาอย่างเดียวLocalTime8+ใช่
วันที่+เวลา (Local)LocalDateTime8+ใช่
วันที่+เวลา+Time ZoneZonedDateTime8+ใช่
Timestamp (UTC)Instant8+ใช่
Legacy Datejava.util.Date1.1+ไม่
Legacy CalendarGregorianCalendar1.1+ไม่

Best Practice

  • Java 8+ → ใช้ java.time.* ทุกกรณี (Immutable, Thread-safe, API ดี)
  • Legacy only → ใช้ Date/Calendar เมื่อบังคับต้องรองรับโค้ดเก่า
  • Database → ใช้ java.sql.Date (DATE) หรือ java.sql.Timestamp (TIMESTAMP)