Có một số điều điên rồ xảy ra với đối tượng JS DATE chuyển đổi chuỗi, ví dụ, hãy xem xét ngày sau bạn đã cung cấp
Lưu ý: Các ví dụ sau có thể có hoặc không TẮT MỘT NGÀY tùy thuộc vào múi giờ và thời gian hiện tại của BẠN .
new Date("2011-09-24"); // Year-Month-Day
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
Tuy nhiên, nếu chúng tôi sắp xếp lại định dạng chuỗi thành Tháng-Năm ...
new Date("09-24-2011");
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Một cái lạ khác
new Date("2011-09-24");
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF AS BEFORE.
new Date("2011/09/24"); // change from "-" to "/".
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Chúng tôi có thể dễ dàng thay đổi dấu gạch ngang trong ngày của bạn "2011-09-24" khi thực hiện một ngày mới
new Date("2011-09-24".replace(/-/g, '\/')); // => "2011/09/24".
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Điều gì xảy ra nếu chúng ta có chuỗi ngày như "2011-09-24T00: 00: 00"
new Date("2011-09-24T00:00:00");
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
Bây giờ thay đổi dấu gạch nối để chuyển tiếp dấu gạch chéo như trước; chuyện gì xảy ra
new Date("2011/09/24T00:00:00");
// => Invalid Date
Tôi thường phải quản lý định dạng ngày 2011-09-24T00: 00: 00 vì vậy đây là những gì tôi làm.
new Date("2011-09-24T00:00:00".replace(/-/g, '\/').replace(/T.+/, ''));
// => Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
CẬP NHẬT
Nếu bạn cung cấp các đối số riêng cho hàm tạo Ngày, bạn có thể nhận các đầu ra hữu ích khác như được mô tả bên dưới
Lưu ý: đối số có thể là kiểu Số hoặc Chuỗi. Tôi sẽ đưa ra các ví dụ với các giá trị hỗn hợp.
Nhận tháng đầu tiên và ngày của một năm nhất định
new Date(2011, 0); // Normal behavior as months in this case are zero based.
=> // Sat Jan 01 2011 00:00:00 GMT-0700 (MST)
Nhận tháng cuối cùng và ngày của một năm
new Date((2011 + 1), 0, 0); // The second zero roles back one day into the previous month's last day.
=> // Sat Dec 31 2011 00:00:00 GMT-0700 (MST)
Ví dụ về số, đối số chuỗi. Lưu ý tháng là tháng ba vì không dựa trên tháng nữa.
new Date(2011, "02");
=> // Tue Mar 01 2011 00:00:00 GMT-0700 (MST)
Nếu chúng ta làm điều tương tự nhưng với một ngày bằng không, chúng ta sẽ có được điều gì đó khác biệt.
new Date(2011, "02", 0); // again the zero roles back from March to the last day of February.
=> // Mon Feb 28 2011 00:00:00 GMT-0700 (MST)
Thêm một ngày bằng không vào bất kỳ đối số năm và tháng nào sẽ có được ngày cuối cùng của tháng trước. Nếu bạn tiếp tục với số âm, bạn có thể tiếp tục quay lại vào một ngày khác
new Date(2011, "02", -1);
=> // Sun Feb 27 2011 00:00:00 GMT-0700 (MST)