มีหลายวิธีสร้างอ็อบเจกต์ Date จากสตริงใน Java
วิธีที่ 1: ใช้ SimpleDateFormat (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
วิธีที่ 2: ใช้ LocalDate.parse() (Java 8+) - แนะนำสำหรับวันที่อย่างเดียว
import java.time.LocalDate;
public class Test {
public static void main(String args[]) {
// ISO format (yyyy-MM-dd) - ไม่ต้องระบุ formatter
LocalDate date = LocalDate.parse("2007-12-03");
System.out.println(date);
}
}
ผลลัพธ์
2007-12-03
รูปแบบอื่น ใช้ DateTimeFormatter:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate date = LocalDate.parse("25-12-2020", formatter);
วิธีที่ 3: ใช้ Apache Commons DateUtils
Dependency:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
import java.util.Date;
import org.apache.commons.lang3.time.DateUtils;
public class Test {
public static void main(String args[]) {
String dateInString = "07-06-2013";
Date date = DateUtils.parseDate(dateInString, "dd-MM-yyyy");
System.out.println(date);
}
}
ผลลัพธ์
Fri Jun 07 00:00:00 IST 2013
วิธีที่ 4: ใช้ Instant.parse() (Java 8+) - สำหรับ Timestamp UTC
import java.time.Instant;
public class Test {
public static void main(String args[]) {
String dateInString = "2014-10-05T15:23:01Z";
Instant instant = Instant.parse(dateInString);
System.out.println(instant);
}
}
ผลลัพธ์
2014-10-05T15:23:01Z
ตารางเลือกใช้งาน
| สถานการณ์ | คลาสแนะนำ | รูปแบบ Input |
|---|---|---|
| วันที่อย่างเดียว (Modern) | LocalDate | ISO หรือ Custom (with Formatter) |
| วันที่+เวลา (ไม่มี TZ) | LocalDateTime | ISO หรือ Custom |
| Timestamp UTC | Instant | ISO-8601 UTC (Z or offset) |
| Legacy Date object | SimpleDateFormat | Custom pattern |
| ใช้ Commons Lang อยู่แล้ว | DateUtils | Custom pattern |