1. คลาส DateTimeFormatter
คลาส พิเศษDateTimeFormatterพบทางเข้าสู่ Date Time API จุดประสงค์คือทำให้โปรแกรมเมอร์แปลงวันที่และเวลาเป็นรูปแบบที่ต้องการได้ง่ายที่สุด และเรายินดีที่จะรายงานว่าผู้สร้างของ Java ประสบความสำเร็จ
ใช้งานง่ายมาก ขั้นแรก คุณต้องสร้างDateTimeFormatterคลาสและส่งผ่านรูปแบบที่ระบุวิธีการแสดงวันที่และเวลา:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
ตัวแปรdtfอยู่ที่ไหน เป็นเมธอดคงที่ของคลาส และรูปแบบคือสตริงที่ระบุรูปแบบที่จะใช้แสดงวันที่และเวลาDateTimeFormatterDateTimeFormatter.ofPattern()DateTimeFormatter
ตัวอย่าง
| รหัส | เอาต์พุตคอนโซล |
|---|---|
|
|
ในตัวอย่างข้างต้น เราใช้ofPattern()วิธีการสร้างDateTimeFormatterวัตถุตามรูปแบบ และในบรรทัดถัดไป เราใช้format()วิธีการแปลงLocalDateTimeวัตถุเป็นสตริง คุณเห็นผลลัพธ์บนหน้าจอ
คุณสามารถส่งวัตถุเกือบทุกชนิดจาก Date Time API ไปยังformat()เมธอดได้
สแตติกofPattern()นั้นง่ายมาก: ใช้รูปแบบเป็นอาร์กิวเมนต์และส่งกลับDateTimeFormatterวัตถุ ส่วนที่น่าสนใจที่สุดคือรูปแบบ
2. รูปแบบการจัดรูปแบบ
สตริงที่ส่งผ่านเป็นรูปแบบจะใช้เป็นรูปแบบเมื่อแสดงข้อมูล MMจะถูกแทนที่ด้วยตัวเลขของเดือนddตามวันของเดือน และyyด้วยตัวเลขของปี กรณีของตัวอักษรมีความสำคัญ
ตารางแบบเต็มสำหรับรูปแบบเวลาเหล่านี้คือ:
| จดหมาย | ความหมาย |
|---|---|
| ย | ปี |
| ม | เดือน |
| ง | วัน |
| ชม | ชั่วโมง |
| ม | นาที |
| ส | วินาที |
| ส | หนึ่งในพันของวินาที |
| น | นาโนวินาที |
จำไม่ยากเป็นพิเศษ
แต่ทำไมรูปแบบในตัวอย่างถึงมีตัวอักษรซ้ำกัน MM, dd และ yy? นี่คือจุดที่น่าสนใจมากขึ้น
ความคิดทั่วไป
จำนวนตัวอักษรมีผลต่อความยาวของข้อความ ยิ่งมีตัวอักษรมากข้อความก็จะยาวขึ้น
หากระบุตัวอักษร H เพียงครั้งเดียว 9 ชั่วโมงจะแสดงเป็น 9 แต่ถ้าระบุตัวอักษร H สองครั้งติดต่อกัน 9 ชั่วโมงจะแสดงเป็น 09
หากระบุตัวอักษร y 2 ครั้งติดต่อกัน ปีจะถูกเขียนโดยใช้ตัวเลข 2 หลัก หากเกิดขึ้น 4 ครั้งติดต่อกัน ก็จะใช้ตัวเลข 4 หลัก
หากระบุตัวอักษร M 2 ครั้งติดต่อกัน จำนวนเดือนจะถูกเขียน หาก 3 ครั้งติดต่อกัน จะใช้ชื่อเดือน (ตัวอักษร 3 ตัวแรก) ถ้า 4 ครั้งติดต่อกัน จะใช้ชื่อเต็มของเดือน
ตัวอย่าง:
| รหัส | เอาต์พุตคอนโซล |
|---|---|
|
|
3. กรอกตารางรูปแบบ
ตารางเต็มมีขนาดค่อนข้างใหญ่และน่าสนใจมาก:
| ลวดลาย | รูปแบบของรูปแบบ | ตัวอย่าง | คำอธิบาย |
|---|---|---|---|
| ย | ปปปปปป | 19; 2019 | ปี |
| เอ็ม/แอล | มมมมมมมมมมมมมมมมม | 1; 01; ม.ค; มกราคม; เจ | เดือน |
| ง | ง, วว | 9; 09 | วัน |
| ชม | ฮ, ฮ | 2; 02 | ชั่วโมง |
| ม | เมตร, มม | 3; 03 | นาที |
| ส | เอส, เอสเอส | 5; 05 | วินาที |
| ส | ส,ส,ส,ส,... | 1; 12; 123 | หนึ่งในพันของวินาที |
| น | น | 123456789 | นาโนวินาที |
| ช | จี GGGG GGGGG | ค.ศ. ; อันโน โดมินี่; ก; | ยุค |
| ถาม/ถาม | คิว คิวคิว คิวคิว คิวคิวคิว | 3; 03; ไตรมาสที่ 3; ไตรมาสที่ 3 | หนึ่งในสี่ |
| ว | ว | 13 | สัปดาห์แห่งปี |
| ว | ว | 3 | สัปดาห์ของเดือน |
| อี | อีอีอีอีอีอีอีอีอีอีอีอีอีอีอีอี | จันทร์ ; วันจันทร์; ม | วันของสัปดาห์ |
| จ/ค | อี อี อี อี อี อี อี อี อี | 1; 01; จันทร์ ; วันจันทร์; ม | วันของสัปดาห์ |
| ก | ก | น | น. หรือ น |
| ชม. | ชม. | 12 | นาฬิกา 12 ชั่วโมง |
| วี | วี.วี | ยุโรป/เฮลซิงกิ | เขตเวลา |
| ซี | zzzzz | EET; เวลามาตรฐานยุโรปตะวันออก | เขตเวลา |
| อ | OOOOO | จีเอ็มที+2; GMT+02:00 | เขตเวลา |
อย่างไรก็ตาม นี่ไม่ใช่เวอร์ชันสมบูรณ์จริงๆ คุณสามารถค้นหาเวอร์ชันที่สมบูรณ์ที่สุดได้ที่นี่
4. แยกเวลา
คลาส นี้DateTimeFormatterยังน่าสนใจสำหรับความสามารถที่ไม่เพียงแต่แปลงวันที่และเวลาเป็นสตริงตามรูปแบบที่กำหนดเท่านั้น แต่ยังสามารถดำเนินการย้อนกลับได้อีกด้วย!
การแยกวิเคราะห์สตริงคือกระบวนการแยกสตริงออกเป็นโทเค็นที่มีความหมาย
นี่คือสิ่งที่ดูเหมือน:
| รหัส | เอาต์พุตคอนโซล |
|---|---|
|
|
ขั้นแรก เราสร้างDateTimeFormatterวัตถุและตั้งค่ารูปแบบที่ใช้สำหรับการแยกวิเคราะห์
จากนั้นเราจะเรียกLocalDate.parse()หรือLocalTime.parse()หรือLocalDateTime.parse()เมธอดและส่งผ่านสตริงเพื่อแยกวิเคราะห์พร้อมกับDateTimeFormatterวัตถุ ซึ่งเข้าใจวิธีการแยกวิเคราะห์ข้อความที่ส่งผ่านและรูปแบบใดที่ควรใช้ในการทำ
อีกตัวอย่างหนึ่ง: คราวนี้เราจะแยกวิเคราะห์เวลา
| รหัส | เอาต์พุตคอนโซล |
|---|---|
|
|
GO TO FULL VERSION