Javascript kiểm tra xem hôm nay có phải là ngày cuối cùng của tháng không
Cách đơn giản nhất để kiểm tra xem một ngày có phải là ngày cuối cùng của tháng hay không bằng cách thêm 1 vào ngày và sau đó kiểm tra giá trị của ngày. Nếu ngày trở thành 1, thì ngày đã cho là ngày cuối cùng của tháng; let d1 = new Date('2020-02-29'); d1.setDate(d1.getDate() + 1); if(d1.getDate() === 1){ console.log('Date d1 is the last day of the month.'); }else{ console.log('Date d1 is not the last day of the month.'); } let d2 = new Date('2022-03-30'); d2.setDate(d1.getDate() + 1); if(d2.getDate() === 1){ console.log('Date d2 is the last day of the month.'); }else{ console.log('Date d2 is not the last day of the month.'); } đầu ra Date d1 is the last day of the month. Date d2 is not the last day of the month. Trong ví dụ này, hai đối tượng Date được tạo. Đối tượng Ngày đầu tiên d1 đại diện cho ngày 29 tháng 2 năm 2020. Vì là ngày cuối cùng của tháng nên thêm 1 ngày nữa là ngày 1 tháng 3 Mặt khác, đối tượng Date thứ hai d2 đại diện cho ngày 30 tháng 3. Bạn biết rằng tháng 3 có 31 ngày và đối tượng ngày này không phải là ngày cuối cùng của tháng, vì vậy thêm 1 ngày vào đó sẽ có ngày 31 tháng 3 Thật dễ dàng để có được ngày đầu tiên của tháng nhưng còn ngày cuối cùng của tháng thì sao? Trong suốt bài đăng này, hãy nhớ rằng trong JavaScript, số tháng của Ngày không được lập chỉ mục - vì vậy tháng 1 là tháng 0 và tháng 12 là tháng 11 🙄 – đó là điều tôi thường quênHóa ra cách lấy ngày cuối cùng của tháng là hỏi ngày trước ngày đầu tiên của tháng tiếp theo. Tôi đặc biệt thích cách diễn đạt đó vì nó vừa là mô tả cho con người vừa là giải thích mã. Đây là một ví dụ
Rõ ràng số không là ngày trước ngày đầu tiên của một tháng?. Và số 0 không phải là trường hợp đặc biệt, bạn có thể tiếp tục đếm ngược
Nó cũng hoạt động với các tháng và qua các năm
Cả hai có thể được kết hợp để có được ngày cuối cùng của năm bằng cách yêu cầu ngày thứ 0 của tháng thứ mười ba (nhớ rằng nó không được lập chỉ mục, vì vậy tháng là số 12)
Hay giây cuối cùng trước thềm năm mới
Và đó là hành vi tương tự khi bạn thay đổi một đối tượng ngày tháng - nó thực hiện một cách thông minh khi ghi để nó đọc lại bình thường
Thoạt đầu, nó có vẻ hơi kỳ lạ nhưng lại hoạt động hoàn toàn nhất quán — như được mô tả trong thông số kỹ thuật (thậm chí là bản đầu tiên từ năm 1997) — và thân thiện với nhà phát triển một cách khác thường (đặc biệt là so với sự cố tháng không được lập chỉ mục), tôi không thể tin rằng mình đã không làm như vậy |