1. คลาส DateTimeFormatter
คลาส พิเศษDateTimeFormatter
พบทางเข้าสู่ Date Time API จุดประสงค์คือทำให้โปรแกรมเมอร์แปลงวันที่และเวลาเป็นรูปแบบที่ต้องการได้ง่ายที่สุด และเรายินดีที่จะรายงานว่าผู้สร้างของ Java ประสบความสำเร็จ
ใช้งานง่ายมาก ขั้นแรก คุณต้องสร้างDateTimeFormatter
คลาสและส่งผ่านรูปแบบที่ระบุวิธีการแสดงวันที่และเวลา:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
ตัวแปรdtf
อยู่ที่ไหน เป็นเมธอดคงที่ของคลาส และรูปแบบคือสตริงที่ระบุรูปแบบที่จะใช้แสดงวันที่และเวลาDateTimeFormatter
DateTimeFormatter.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