JavaScript Temporal กำลังมา
(developer.mozilla.org)- ภาพรวม
- การนำออบเจ็กต์ JavaScript Temporal ไปใช้งานเริ่มเปิดตัวในเบราว์เซอร์เวอร์ชันทดลองแล้ว
- การจัดการวันที่และเวลาสำหรับนักพัฒนาเว็บจะง่ายขึ้นและทันสมัยขึ้นอย่างมาก
- แอปพลิเคชันที่เกี่ยวข้องกับการจัดตารางเวลา การทำให้รองรับหลายภาษา และการจัดการข้อมูลด้านเวลา จะสามารถใช้ความสามารถแบบบิลต์อินที่มีประสิทธิภาพและแม่นยำได้
- ปัญหาของออบเจ็กต์ JavaScript
Date
- ถูกสร้างขึ้นโดยคัดลอกการใช้งานเริ่มต้นของ
java.util.Dateใน Java เมื่อปี 1995 - รองรับเฉพาะเวลาท้องถิ่นของผู้ใช้และ UTC และไม่มีการรองรับเขตเวลา
- พฤติกรรมการแปลงข้อความเป็นวันที่ไม่เสถียรมากและเป็นแบบเปลี่ยนค่าได้ (mutable)
- การคำนวณเวลาออมแสง (DST) และการเปลี่ยนแปลงปฏิทินในอดีตทำได้ยาก
- ความสามารถหลักของ Temporal
- ออกแบบมาให้เป็นตัวแทนที่สมบูรณ์ของออบเจ็กต์
Date - รองรับการแสดงเขตเวลาและปฏิทิน
- มีเมธอดยูทิลิตีมากกว่า 200 รายการ
- ครอบคลุมความสามารถหลากหลาย เช่น การแปลง การเปรียบเทียบ การคำนวณ และการจัดรูปแบบ
- สถานะการรองรับในเบราว์เซอร์
- ปัจจุบัน Firefox มีการนำไปใช้งานที่สมบูรณ์ที่สุด
- ให้ใช้งานเป็นฟีเจอร์ทดลองใน Firefox Nightly
- Safari และ Chrome ก็กำลังอยู่ระหว่างการพัฒนาเช่นกัน
- สามารถทดลองได้ผ่าน
@js-temporal/polyfillบนหน้าเอกสารของ TC39
- องค์ประกอบสำคัญ
Duration: ความแตกต่างระหว่างสองช่วงเวลาInstant: ไทม์สแตมป์ZonedDateTime: วันที่/เวลาที่มีเขตเวลาPlainDateTime: วันที่/เวลาที่ไม่มีเขตเวลา- ยังมีคลาสอื่น ๆ ที่เกี่ยวข้องกับวันที่/เวลาอีกหลายรายการ
API ใหม่นี้คาดว่าจะมอบแนวทางสมัยใหม่ในการจัดการวันที่และเวลาใน JavaScript
6 ความคิดเห็น
ข้อความตอบแชตจากคนที่แอบชอบซึ่งมาช้าเกินไปมาก
ตอนแรกทั้งการทำ
Dateก็หยิบมาจาก Java และการทำTemporalก็หยิบมาจาก Java เยอะเหมือนกัน แบบนี้ก็อดคิดไม่ได้ว่ามันจำเป็นต้องใช้เวลานานขนาดนี้เลยหรือ Java 8 ที่มีLocalDateTimeออกมาตั้งแต่ปี 2014 แล้ว ดังนั้นถ้าทำTemporalบนพื้นฐานนี้ได้เร็วกว่านี้ ก็ดูเหมือนว่าจะไม่จำเป็นต้องปล่อยให้แตกกระจายเป็นไลบรารีของ third party หลากหลายตัวเอ่อ เหมือนเคยได้ยินมาจากที่ไหนบ่อย ๆ เลย...
นอกจากเปลี่ยน
LocalDateTimeเป็นPlainDateTimeแล้ว ก็แทบจะเหมือน Java เป๊ะเลย…มีก็ดีอยู่หรอก… แต่ถึงขนาดต้องทำกันขนาดนี้ไหมเนี่ย…
เดิมทีหากต้องจัดการเวลาให้รองรับหลายไทม์โซน ก็ต้องใช้ไลบรารีหรือไม่ก็ต้องคำนึงถึงเงื่อนไขหลายอย่างแล้วลงมือทำเอง ดังนั้นถ้าไปในทิศทางที่มีการรองรับมาให้เป็นพื้นฐานเลยก็น่าจะดี