การปรับวันที่อัตโนมัติใน JavaScript
JavaScript มีคุณลักษณะที่น่าสนใจและมีประโยชน์มากอย่างหนึ่ง: หากกำหนดช่วงเวลาไม่ถูกต้องในขณะสร้างวัตถุ Date
มันจะถูกคำนวณใหม่ให้ถูกต้องโดยอัตโนมัติ
มาดูตัวอย่างกัน
อย่างที่คุณทราบ วันที่ 35 มกราคมไม่มีอยู่จริง
วันที่สูงสุดที่เป็นไปได้ของเดือนมกราคมคือวันที่ 31
นั่นหมายความว่าวันที่ 35 มกราคมของเรา
มีวันส่วนเกินอยู่ 4 วัน ในกรณีเช่นนี้ JavaScript ก็แค่
จะบวกวันส่วนเกิน 4 วันนั้นเข้าไปในเดือนถัดไป:
let date = new Date(2018, 0, 35);
console.log(date); // จะได้วันที่ 4 กุมภาพันธ์
ไม่สามารถระบุเฉพาะวันที่ส่วนเกินเท่านั้น แต่
ยังสามารถระบุเดือนส่วนเกินได้ด้วย ควรจำไว้ด้วยว่าเดือน
เริ่มจากศูนย์ ดังนั้นเดือนสุดท้ายที่ถูกต้องคือ
เดือนที่ 11 หากระบุเดือนที่ 12
ก็จะได้เดือนมกราคมของปีถัดไป:
let date = new Date(2018, 12, 1); // ระบุเดือนที่ 12
console.log(date); // จะได้วันที่ 1 มกราคม 2019
การปรับที่อธิบายไว้ข้างต้นก็ทำงานในทิศทางที่น้อยกว่าได้เช่นกัน
อย่างที่คุณทราบ วันที่น้อยที่สุด
ของเดือนคือวันที่หมายเลข 1
ดังนั้น หากระบุวันที่หมายเลข 0
ก็จะได้วันสุดท้ายของเดือนก่อนหน้า:
let date = new Date(2018, 1, 0); // ระบุวันที่ศูนย์
console.log(date); // จะได้วันที่ 31 มกราคม
นอกจากนี้ยังสามารถระบุค่าลบสำหรับ
วันและเดือนได้ด้วย ควรจำไว้ว่า
วันที่น้อยที่สุดมีหมายเลข 1 ส่วน
เดือนที่น้อยที่สุดมีหมายเลข 0 นั่นหมายความว่า
วันที่ลบหนึ่งจะตรงกับวันที่ 2
นับจากท้ายของเดือนก่อนหน้า ส่วนเดือนลบหนึ่ง
ก็จะตรงกับเดือนสุดท้าย
ของปีก่อนหน้า:
let date = new Date(2018, 1, -1); // ระบุวันที่ -1
console.log(date); // จะได้วันที่ 30 มกราคม
let date = new Date(2018, -1, 1); // ระบุเดือนที่ -1
console.log(date); // จะได้วันที่ 1 ธันวาคม 2017
ทุกสิ่งที่กล่าวมาข้างต้นทำงานคล้ายกันกับ ชั่วโมง นาที และวินาที:
let date = new Date(2018, 0, 1, 24, 0, 0); // ระบุชั่วโมงที่ 24
console.log(date); // จะได้วันที่ 2 มกราคม, 0 ชั่วโมง
let date = new Date(2018, 0, 1, 25, 0, 0); // ระบุชั่วโมงที่ 25
console.log(date); // จะได้วันที่ 2 มกราคม, 1 ชั่วโมง
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 1, 35);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 15, 1);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 3, 31);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 1, 31);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 12, 33);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 33, 33);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 5, 0);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 0, 0);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, -12, -33);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // จะได้วันที่ใด?
กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // จะได้วันที่ใด?