การปรับวันที่อัตโนมัติใน JavaScript

JavaScript มีคุณลักษณะที่น่าสนใจและมีประโยชน์มากอย่างหนึ่ง: หากกำหนดช่วงเวลาไม่ถูกต้องในขณะสร้างวัตถุ Date มันจะถูกคำนวณใหม่ให้ถูกต้องโดยอัตโนมัติ มาดูตัวอย่างกัน

อย่างที่คุณทราบ วันที่ 35 มกราคมไม่มีอยู่จริง วันที่สูงสุดที่เป็นไปได้ของเดือนมกราคมคือวันที่ 31 นั่นหมายความว่าวันที่ 35 มกราคมของเรา มีวันส่วนเกินอยู่ 4 วัน ในกรณีเช่นนี้ JavaScript ก็แค่ จะบวกวันส่วนเกิน 4 วันนั้นเข้าไปในเดือนถัดไป:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // จะได้วันที่ 4 กุมภาพันธ์

ไม่สามารถระบุเฉพาะวันที่ส่วนเกินเท่านั้น แต่ ยังสามารถระบุเดือนส่วนเกินได้ด้วย ควรจำไว้ด้วยว่าเดือน เริ่มจากศูนย์ ดังนั้นเดือนสุดท้ายที่ถูกต้องคือ เดือนที่ 11 หากระบุเดือนที่ 12 ก็จะได้เดือนมกราคมของปีถัดไป:

javascriptlet date = new Date(2018, 12, 1); // ระบุเดือนที่ 12
console.log(date); // จะได้วันที่ 1 มกราคม 2019

การปรับที่อธิบายไว้ข้างต้นก็ทำงานในทิศทางที่น้อยกว่าได้เช่นกัน อย่างที่คุณทราบ วันที่น้อยที่สุด ของเดือนคือวันที่หมายเลข 1 ดังนั้น หากระบุวันที่หมายเลข 0 ก็จะได้วันสุดท้ายของเดือนก่อนหน้า:

javascriptlet date = new Date(2018, 1, 0); // ระบุวันที่ศูนย์
console.log(date); // จะได้วันที่ 31 มกราคม

นอกจากนี้ยังสามารถระบุค่าลบสำหรับ วันและเดือนได้ด้วย ควรจำไว้ว่า วันที่น้อยที่สุดมีหมายเลข 1 ส่วน เดือนที่น้อยที่สุดมีหมายเลข 0 นั่นหมายความว่า วันที่ลบหนึ่งจะตรงกับวันที่ 2 นับจากท้ายของเดือนก่อนหน้า ส่วนเดือนลบหนึ่ง ก็จะตรงกับเดือนสุดท้าย ของปีก่อนหน้า:

javascriptlet date = new Date(2018, 1, -1); // ระบุวันที่ -1
console.log(date); // จะได้วันที่ 30 มกราคม
javascriptlet date = new Date(2018, -1, 1); // ระบุเดือนที่ -1
console.log(date); // จะได้วันที่ 1 ธันวาคม 2017

ทุกสิ่งที่กล่าวมาข้างต้นทำงานคล้ายกันกับ ชั่วโมง นาที และวินาที:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // ระบุชั่วโมงที่ 24
console.log(date); // จะได้วันที่ 2 มกราคม, 0 ชั่วโมง
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // ระบุชั่วโมงที่ 25
console.log(date); // จะได้วันที่ 2 มกราคม, 1 ชั่วโมง
Задание 1

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // จะได้วันที่ใด?
Задание 2

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // จะได้วันที่ใด?
Задание 3

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // จะได้วันที่ใด?
Задание 4

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // จะได้วันที่ใด?
Задание 5

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // จะได้วันที่ใด?
Задание 6

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // จะได้วันที่ใด?
Задание 7

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // จะได้วันที่ใด?
Задание 8

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // จะได้วันที่ใด?
Задание 9

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // จะได้วันที่ใด?
Задание 10

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // จะได้วันที่ใด?
Задание 11

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // จะได้วันที่ใด?
Задание 12

กำหนดว่า JavaScript จะแปลงช่วงเวลา ต่อไปนี้เป็นวันที่ใด:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // จะได้วันที่ใด?