Đ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:
let 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:
let 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:
let 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:
let date = new Date(2018, 1, -1); // chỉ định -1 ngày
console.log(date); // sẽ ra ngày 30 tháng Giêng
let 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:
let 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ờ
let 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ờ
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 1, 35);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 15, 1);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 3, 31);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 1, 31);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 12, 33);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 33, 33);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 5, 0);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 0, 0);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, -12, -33);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // ngày nào sẽ ra?
Xác định JavaScript sẽ chuyển đổi thời điểm sau thành ngày nào:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // ngày nào sẽ ra?