Điều chỉnh Ngày tháng Tự động trong JavaScript

JavaScript có một tính năng rất thú vị và hữu ích: nếu khi tạo đối tượng Date một thời điểm không hợp lệ được chỉ định - nó sẽ tự động được tính toán lại thành hợp lệ. Hãy xem ví dụ.

Như bạn đã biết, ngày 35 tháng Giêng không tồn tại. Ngày tối đa có thể có của tháng Giêng là 31. Điều này có nghĩa là ngày 35 tháng Giêng của chúng ta có 4 ngày thừa. JavaScript trong trường hợp này sẽ chỉ cộng thêm 4 ngày thừa này vào tháng tiếp theo:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // sẽ ra ngày 4 tháng Hai

Bạn có thể chỉ định không chỉ ngày thừa, mà cả tháng thừa. Trong trường hợp này cần nhớ rằng các tháng bắt đầu từ số không, và do đó tháng hợp lệ cuối cùng là tháng 11. Nếu chỉ định tháng thứ 12 thì sẽ ra tháng Giêng của năm sau:

javascriptlet date = new Date(2018, 12, 1); // chỉ định tháng thứ 12
console.log(date); // sẽ ra ngày 1 tháng Giêng năm 2019

Việc điều chỉnh được mô tả ở trên cũng hoạt động theo chiều ngược lại. Như bạn đã biết, ngày thấp nhất của tháng là ngày số 1. Vì vậy, nếu chỉ định ngày số 0, thì sẽ ra ngày cuối cùng của tháng trước:

javascriptlet date = new Date(2018, 1, 0); // chỉ định ngày số 0
console.log(date); // sẽ ra ngày 31 tháng Giêng

Bạn cũng có thể chỉ định giá trị âm cho ngày và tháng. Khi đó cần nhớ rằng ngày thấp nhất có số 1, và tháng thấp nhất - số 0. Điều này có nghĩa, rằng ngày thứ âm một sẽ rơi vào 2 ngày tính từ cuối của tháng trước, còn tháng âm một sẽ rơi vào tháng cuối cùng của năm trước:

javascriptlet date = new Date(2018, 1, -1); // chỉ định -1 ngày
console.log(date); // sẽ ra ngày 30 tháng Giêng
javascriptlet date = new Date(2018, -1, 1); // chỉ định -1 tháng
console.log(date); // sẽ ra ngày 1 tháng Mười Hai năm 2017

Tất cả những điều nói trên cũng hoạt động tương tự với giờ, phút và giây:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // chỉ định giờ thứ 24
console.log(date); // sẽ ra ngày 2 tháng Giêng, 0 giờ
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // chỉ định giờ thứ 25
console.log(date); // sẽ ra ngày 2 tháng Giêng, 1 giờ
Задание 1

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // ngày nào sẽ ra?
Задание 2

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // ngày nào sẽ ra?
Задание 3

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // ngày nào sẽ ra?
Задание 4

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // ngày nào sẽ ra?
Задание 5

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // ngày nào sẽ ra?
Задание 6

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // ngày nào sẽ ra?
Задание 7

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // ngày nào sẽ ra?
Задание 8

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // ngày nào sẽ ra?
Задание 9

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // ngày nào sẽ ra?
Задание 10

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // ngày nào sẽ ra?
Задание 11

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // ngày nào sẽ ra?
Задание 12

Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // ngày nào sẽ ra?