SimpleDateFormat เป็นคลาสสำหรับแก้ปัญหารูปแบบเวลาของเรา
SimpleDateFormat เป็นคลาสที่เป็นรูปธรรมสำหรับการจัดรูปแบบและแยกวิเคราะห์วันที่ในลักษณะที่ขึ้นอยู่กับสถานที่ อนุญาตให้จัดรูปแบบ (วันที่ -> ข้อความ) การแยกวิเคราะห์ (ข้อความ -> วันที่) และการทำให้เป็นมาตรฐาน SimpleDateFormat ช่วยให้สามารถเลือกรูปแบบรูปแบบวันที่-เวลาที่ผู้ใช้กำหนดได้
รูปแบบวันที่และเวลา รูปแบบวันที่และเวลาจะถูกระบุโดยสตริงรูปแบบวันที่และเวลา ในสตริงรูปแบบวันที่และเวลา ตัวอักษรที่ไม่มีเครื่องหมายคำพูด 'A' ถึง 'Z' และ 'a' ถึง 'z' จะถูกตีความเป็นตัวอักษรรูปแบบ และใช้เพื่อแสดงองค์ประกอบสตริงวันที่หรือเวลา ข้อความสามารถอยู่ในเครื่องหมายคำพูดเดี่ยว (') เพื่อหลีกเลี่ยงการตีความ "''" หมายถึงคำพูดเดียว อักขระอื่นๆ ทั้งหมดจะไม่ถูกตีความ แต่จะถูกคัดลอกไปยังสตริงเอาต์พุตระหว่างการจัดรูปแบบ หรือจับคู่กับสตริงอินพุตระหว่างการแยกวิเคราะห์
มีการกำหนดตัวอักษรรูปแบบต่อไปนี้ (อักขระอื่นๆ ทั้งหมด 'A' ถึง 'Z' และ 'a' ถึง 'z' จะถูกสงวนไว้):
ตัวอย่างการแสดงองค์ประกอบวันที่หรือเวลาของตัวอักษร
โฆษณาข้อความตัวระบุ G Era
ปี พ.ศ. 2539;
เดือนในปี กรกฎาคม; ก.ค. 07
จำนวนสัปดาห์ในปี หมายเลข 27
W จำนวนสัปดาห์ในเดือนที่ 2
D จำนวนวันในปี หมายเลข 189
d จำนวนวันในเดือนที่ 10
F สัปดาห์ของเดือนหมายเลข 2
E วันของสัปดาห์ ข้อความวันอังคาร;
เครื่องหมาย AM/PM ข้อความ PM
ชั่วโมง ชั่วโมงของวัน (0-23) หมายเลข 0
k ชั่วโมงของวัน (1-24) หมายเลข 24
จำนวนชั่วโมงใน K am/pm (0-11) หมายเลข 0
ชั่วโมง ชั่วโมง/บ่าย (1-12) หมายเลข 12
เมตร จำนวนนาทีในหนึ่งชั่วโมง หมายเลข 30
วินาที เป็นนาที หมายเลข 55
S จำนวนมิลลิวินาที หมายเลข 978
z โซนเวลา โซนเวลาทั่วไป เวลามาตรฐานแปซิฟิก;
โซนเวลา Z โซนเวลา RFC 822 -0800
ตัวอย่างต่อไปนี้แสดงวิธีการตีความรูปแบบวันที่และเวลาในสถานที่ของสหรัฐอเมริกา วันที่และเวลาที่กำหนดคือ 2001-07-04 12:08:56 ตามเวลาท้องถิ่นในเขตเวลาแปซิฟิกของสหรัฐอเมริกา
ผลลัพธ์รูปแบบวันที่และเวลา
"yyyy.MM.dd G 'at' HH:mm:ss z" โฆษณา 2544.07.04 เวลา 12:08:56 PDT
"EEE, MMM d, ''yy" วันพุธที่ 4 ก.ค. 01
"h:mm" 12:08 น
"hh 'o''clock' a, zzzz" 12.00 น. เวลาออมแสงแปซิฟิก
"K:mm a, z" 13:08 PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.กรกฎาคม.04 ส.ค. 12:08 น.
"EEE, d MMM yyyy HH:mm:ss Z" วันพุธที่ 4 กรกฎาคม 2544 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
ตัวอย่างการใช้งานจริงของ SimpleDateFormat ในการเขียนโปรแกรม:
(1) การจัดรูปแบบ (วันที่ -> ข้อความ)
โดยทั่วไปวันที่และเวลาที่ใช้กันทั่วไปในภาษาจีนคือ: 20070719 20:29:30
ตัวจัดรูปแบบ SimpleDateFormat = SimpleDateFormat ใหม่ ("yyyyMMdd hh:mm:ss");
System.out.println("วันที่เป็นสตริง "+formater.format(วันที่ใหม่()));
รูปแบบทั่วไปที่คล้ายกัน ได้แก่ yyMMdd hh:mm:ss yyyy-MM-dd hh:mm:ss dd-MM-yyyy hh:mm:ss
แต่เป็นที่น่าสังเกตว่ารูปแบบนี้ (19JUL07) และรูปแบบที่คล้ายกันนั้นมีเคล็ดลับเล็กน้อย 19JUL07
SimpleDateFormat formater = new SimpleDateFormat("ddMMMyy",,new Locale("US"))
System.out.println("วันที่เป็นสตริง "+formater.format(วันที่ใหม่()).toUpperCase());
เนื่องจากเป็นภาษาอังกฤษ จึงควรใช้พารามิเตอร์อ็อบเจ็กต์ Locale ไม่เช่นนั้นจะใช้ Locale ดีฟอลต์
(2) การวิเคราะห์ (ข้อความ -> วันที่)
โดยทั่วไป คุณสามารถใช้โหมดวันที่และเวลาและพารามิเตอร์ข้อความในรูปแบบใดก็ได้ที่คุณต้องการรับเวลาในรูปแบบที่ต้องการ ตัวอย่างเช่น 2007-7-19 จะส่งคืนอ็อบเจ็กต์เวลาประเภท java.util.Date และชั่วโมง นาทีและวินาทีจะถูกเติมด้วย 0
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
พยายาม...{
System.out.println("สตริงถึงวันที่ "+formater.parse("2007sep01"));
} จับ (ParseException e) ...{
e.printStackTrace();
-
โดยเฉพาะอย่างยิ่ง
formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
พยายาม...{
System.out.println("สตริงถึงวันที่ "+formater.parse("2007sep01"));
} จับ (ParseException e) ...{
e.printStackTrace();
-
นอกจากนี้ยังส่งคืนอ็อบเจ็กต์วันที่ประเภท java.util.Date โดยมีชั่วโมง นาที และวินาทีคั่นด้วย 0
(3) ข้อความ -> การประทับเวลา, วันที่ -> การประทับเวลา
ประทับเวลา t;
รูปแบบ SimpleDateFormat = SimpleDateFormat ใหม่ ("yyyy-MM-dd hh:mm:ss");
พยายาม...{
t = การประทับเวลาใหม่(format.parse("2007-07-19 00:00:00").getTime());
} จับ (ParseException e) ...{
e.printStackTrace();
-
ประทับเวลา t;
รูปแบบ SimpleDateFormat = SimpleDateFormat ใหม่ ("yyyy-MM-dd hh:mm:ss");
t = การประทับเวลาใหม่ (วันที่ใหม่ ().getTime