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

วิธาสร้าง Date Object จาก String ใน Java


มีหลายวิธีสร้างอ็อบเจกต์ 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)LocalDateISO หรือ Custom (with Formatter)
วันที่+เวลา (ไม่มี TZ)LocalDateTimeISO หรือ Custom
Timestamp UTCInstantISO-8601 UTC (Z or offset)
Legacy Date objectSimpleDateFormatCustom pattern
ใช้ Commons Lang อยู่แล้วDateUtilsCustom pattern