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

SimpleDateFormat Format Codes ใน Java คู่มือครบครัน


คลาส java.text.SimpleDateFormat ใช้จัดรูปแบบและแปลงสตริง↔วันที่

ขั้นตอนการ Parse วันที่

  1. สร้าง SimpleDateFormat ด้วยรูปแบบที่ต้องการ
  2. ใช้เมธอด parse() แปลงสตริงเป็น Date

ตาราง Format Codes (Pattern Letters) ครบถ้วน

LetterComponentExample
GEra designator (ยุค)AD, BC
yYear (ปี)2005, 96
YWeek year (ปีของสัปดาห์)2005, 96
MMonth in year (เดือนในปี)September, Sep, 09
LMonth in year (standalone)September, Sep, 09
wWeek in year (สัปดาห์ในปี)23
WWeek in month (สัปดาห์ในเดือน)3
DDay in year (วันในปี)129
dDay in month (วันในเดือน)27
FDay of week in month (วันของสัปดาห์ในเดือน)5
EDay in week name (ชื่อวัน)Monday, Mon
uDay in week number (1=Mon...7=Sun)1
aAM/PM markerPM, AM
HHour in day (0-23)0, 22
kHour in day (1-24)1, 12, 24
KHour in AM/PM (0-11)0, 5, 11
hHour in AM/PM (1-12)1, 5, 12
mMinute in hour (นาที)25
sSecond in minute (วินาที)24
SMillisecond (มิลลิวินาที)756
zTime zone (ชื่อ)PST, GMT
ZTime zone (offset RFC 822)-0500
XTime zone (offset ISO 8601)-06, -0600, -06:00

ตัวอย่างการ Parse รูปแบบต่างๆ

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

public class Sample {
    public static void main(String args[]) throws ParseException {
        // รูปแบบ yyyy/dd/MM
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy/dd/MM");
        Date date = formatter.parse("2007/25/06");
        System.out.println("Date value: " + date);
        
        // รูปแบบ y:G (ปี:ยุค)
        formatter = new SimpleDateFormat("y:G");
        date = formatter.parse("1920:BC");
        System.out.println("Date value: " + date);
        
        // รูปแบบ D-M-Y (วัน-เดือน-ปีสัปดาห์)
        formatter = new SimpleDateFormat("D-M-Y");
        date = formatter.parse("25-05-1989");
        System.out.println("Date value: " + date);
    }
}

ผลลัพธ์

Date value: Mon Jun 25 00:00:00 IST 2007
Date value: Sun Jan 01 00:00:00 IST 1920
Date value: Sun Jan 01 00:00:00 IST 1989

ตัวอย่างเพิ่มเติม: เวลา และรูปแบบผสม

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

public class Sample {
    public static void main(String args[]) throws ParseException {
        // เวลา HH:mm:ss
        SimpleDateFormat formatter1 = new SimpleDateFormat("HH:mm:ss");
        Date time1 = formatter1.parse("07:25:30");
        System.out.println("Time value: " + time1);
        
        // รูปแบบผสม EEE:MMM-d:YYYY
        SimpleDateFormat formatter2 = new SimpleDateFormat("EEE:MMM-d:YYYY");
        Date time2 = formatter2.parse("Sun:Jan-8:2018");
        System.out.println("Date value: " + time2);
        
        // ใช้ single quote สำหรับ literal text: hh 'o''clock' a
        SimpleDateFormat formatter3 = new SimpleDateFormat("hh 'o''clock' a");
        Date time3 = formatter3.parse("09 o'clock AM");
        System.out.println("Date value: " + time3);
    }
}

ผลลัพธ์

Time value: Thu Jan 01 07:25:30 IST 1970
Date value: Sun Dec 31 00:00:00 IST 2017
Date value: Thu Jan 01 09:00:00 IST 1970

⚠️ ข้อควรระวังสำคัญ

  • SimpleDateFormat ไม่ใช่ Thread-Safe - ไม่ควรใช้ shared instance ใน multi-threaded environment
  • ใช้ DateTimeFormatter (Java 8+) แทน - immutable และ thread-safe
  • Pattern letters ตัวพิมพ์เล็ก/ใหญ่ มีความหมายต่างกัน (เช่น y vs Y, d vs D)
  • ใช้ single quote ' ห่อ literal text เช่น 'o''clock'

การแปลงเป็น DateTimeFormatter (Java 8+)

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/dd/MM");
LocalDateTime date = LocalDateTime.parse("2007/25/06", formatter);