So sánh ngày là một tính năng định kỳ trong bất kỳ ứng dụng nào. Dù là cùng ngày, sớm hơn hay muộn hơn ngày kia. May mắn thay, JavaScript đã có sẵn các tính năng để làm điều đó
Chúng ta có thể so sánh các ngày bằng cách khởi tạo chúng như một đối tượng Date và sử dụng phương thức getTime[] với các toán tử so sánh. Thí dụ. ngày1. getTime[] === date2. dành thời gian[]
Tiếp tục đọc để được giải thích chi tiết
Giải thích cách so sánh ngày tháng
Nhiều lập trình viên khi cần thực hiện thao tác ngày tháng nào đó đã nghĩ ngay đến việc thêm Moment. js hoặc một thư viện tương tự khác, thường không biết rằng chỉ riêng JavaScript có thể xử lý rất tốt loại hoạt động này
Đối tượng Date trong JavaScript là cấu trúc lý tưởng để làm việc với ngày tháng. Nó có phương thức getTime[] trả về giá trị của một ngày cụ thể tính bằng mili giây và có thể được sử dụng phổ biến để làm việc với ngày tháng, bất kể múi giờ hoặc định dạng
Phần phức tạp nhất là tìm các ví dụ liên quan đến định dạng ngày, đặc biệt đối với các định dạng như dd/mm/yyyy. Nhưng chúng ta sẽ sớm xem xét điều đó
Ví dụ mã dưới đây có lẽ là lý do tại sao bạn đến đây
// We initialize the Date[] object with the current date and time
const date1 = new Date[];
// We initialize a past date
const date2 = new Date['2018-04-07 12:30:00'];
// Let's see if the first date is equal, more recent or less recent than the second date
if [date1.getTime[] === date2.getTime[]] {
console.log['The dates are equal'];
}
else if [date1.getTime[] > date2.getTime[]] {
console.log[date1.toString[] + ' is more recent than ' + date2.toString[]];
}
else {
console.log[date1.toString[] + ' is less recent than ' + date2.toString[]];
}
Thậm chí có thể tùy chọn sử dụng getTime[] trong một số trường hợp, nhưng nếu chúng ta so sánh hai đối tượng Date giống nhau, kết quả sẽ sai, e. g. [Ngày mới == Ngày mới]. Đó là lý do tại sao tôi luôn khuyên bạn nên sử dụng getTime[], để so sánh các giá trị bất kể các đối tượng có khác nhau hay không
Chúng tôi sử dụng ===, vì đây là cách chính xác để kiểm tra xem hai giá trị cùng loại có bằng nhau không. e. g. 1 === 1 [đúng], 1 === '1' [sai]
Chỉ so sánh thời gian
Nếu bạn cần so sánh hai lần, ví dụ kiểm tra nếu 2. 00 chiều lớn hơn 3. 00 giờ sáng, chỉ cần khởi tạo đối tượng Date với các ngày trong cùng một ngày
// Let's suppose the variables time1 and time2 come from an input
var time1 = '14:00';
var time2 = '03:00';
const date1 = new Date['2020-01-01 ' + time1];
const date2 = new Date['2020-01-01 ' + time2];
// Verify if the first time is equal, more recent or less recent than the second
if [date1.getTime[] === date2.getTime[]] {
console.log['Both times are equal'];
}
else if [date1.getTime[] > date2.getTime[]] {
console.log[time1 + ' is more recent than ' + time2];
}
else {
console.log[time1 + ' is less recent than ' + time2];
}
Nếu bạn muốn biết sự khác biệt giữa hai ngày trả về ngày, tháng, năm, v.v. Tôi đã viết một bài báo khác về chủ đề này. https. //ricardometry. com/difference-between-dates-in-javascript
Tôi đã gặp nhiều nhà phát triển nhầm lẫn khi cố gắng so sánh hai ngày bằng JavaScript. Có nhiều phương pháp hoặc thuật toán để so sánh ngày nhưng tôi đang chỉ ra những cách đơn giản nhất để so sánh ngày cũng như thời gian bằng JavaScript
Bài viết này sẽ giúp bạn giải quyết các vấn đề sau
- So sánh hai ngày với thời gian
- So sánh ngày hôm nay với bất kỳ ngày nào khác
- So sánh các ngày trong quá khứ và tương lai với một ngày nhất định
Tạo một đối tượng ngày
Phần sau đây mô tả quá trình tạo đối tượng Date
- Đầu tiên, chúng ta cần tạo một đối tượng ngày tháng
- Đối tượng Date được sử dụng để làm việc với ngày tháng và thời gian
- Các đối tượng ngày được tạo bằng hàm tạo Date[]
- Có bốn cách để khởi tạo một đối tượng ngày tháng
- new Date[] //Điều này sẽ trả về ngày và giờ hiện tại
- ngày mới [năm, tháng, ngày, giờ, phút, giây, mili giây]
- Dưới đây là một vài ví dụ về khởi tạo một ngày
- var hôm nay = ngày mới[] // ngày hiện tại
- var anotherDate = new Date["01/03/2000 20. 50. 10"]
- var otherDate = new Date[2000,03,01]
- var otherDate = new Date[2000,03,01,20,50,10]
- Ghi chú. Ở đây tham số tháng sẽ bắt đầu từ 0 đến 11
So sánh ngày trong JavaScript
Phần sau đây mô tả cách so sánh hai ngày
- tôi có hai ngày. Ngày một là 15-01-2010 và ngày khác là 15-01-2011
- Tôi so sánh hai ngày này bằng mã JavaScript sau
- hàm So sánhDate[] {
- nếu [dateOne > dateTwo] {
- alert["Ngày Một lớn hơn Ngày Hai. "];
- }khác {
- alert["Ngày Hai là lớn hơn Ngày Một. "];
- }
- }
- Ngày so sánh[];
So sánh ngày tháng với thời gian
Phần sau đây mô tả cách so sánh ngày với thời gian
- Ở đây tôi sẽ so sánh hai ngày với thời gian của họ
- Tôi có hai ngày - Date One. 20-05-2012 14. 55. 59 - Ngày Thứ Hai. 20-05-2012 12. 10. 20
- Đoạn mã JavaScript sau sẽ so sánh những ngày này với thời gian của chúng
- hàm So sánhDate[] {
- var dateOne = new Date[2012, 04, 20, 14, 55, 59];
- var dateTwo = new Date[2012, 04, 20, 12, 10, 20];
- nếu [dateOne > dateTwo] {
- alert["Ngày Một lớn hơn Ngày Hai. "];
- }khác {
- alert["Ngày Hai là lớn hơn Ngày Một. "];
- }
- }
- Ngày so sánh[];
So sánh ngày hôm nay với ngày khác
Phần sau đây mô tả cách so sánh ngày hôm nay với một ngày khác
- Đoạn mã sau sẽ so sánh ngày hôm nay với ngày đã cho
- Ngày đã cho là 25-12-2010. Ngày này sẽ được so sánh với ngày hôm nay bằng mã sau
- hàm So sánhDate[] {
- var dateOne = new Date[2010, 11, 25];
- if [hôm nayDate > dateOne] {
- alert["Hôm nay Ngày lớn hơn Ngày Một. "];
- }khác {
- alert["Hôm nay Ngày lớn hơn Ngày Một. "];
- }
- }
- Ngày so sánh[];
Một số phương thức hữu ích của Date Object
- hẹn gặp. Trả về ngày trong tháng [1-31] cho ngày được chỉ định theo giờ địa phương
- nhận ngày. Trả về ngày trong tuần [0-6] cho ngày đã chỉ định theo giờ địa phương
- getFullYear. Trả về năm [4 chữ số cho năm có 4 chữ số] của ngày đã chỉ định theo giờ địa phương
- getHours. Trả về giờ [0-23] trong ngày đã chỉ định theo giờ địa phương
- getMilliseconds. Trả về mili giây [0-999] trong ngày đã chỉ định theo giờ địa phương
- getMinutes. Trả về số phút [0-59] trong ngày đã chỉ định theo giờ địa phương
- nhận được tháng. Trả về tháng [0-11] trong ngày đã chỉ định theo giờ địa phương
- nhận giây. Trả về giây [0-59] trong ngày đã chỉ định theo giờ địa phương
- dành thời gian. Trả về giá trị số của ngày được chỉ định dưới dạng số mili giây kể từ ngày 1 tháng 1 năm 1970, 00. 00. 00 UTC [âm cho thời gian trước]
- getTimezoneOffset. Trả về phần bù múi giờ tính bằng phút cho ngôn ngữ hiện tại
- getUTCDate. Trả về ngày [date] của tháng [1-31] trong ngày đã chỉ định theo giờ quốc tế
- getUTCDay. Trả về ngày trong tuần [0-6] trong ngày đã chỉ định theo giờ quốc tế
- getUTCFullYear. Trả về năm [4 chữ số cho năm có 4 chữ số] trong ngày đã chỉ định theo giờ quốc tế
- getUTCHours. Trả về giờ [0-23] trong ngày đã chỉ định theo giờ quốc tế
- getUTCMilli giây. Trả về mili giây [0-999] trong ngày đã chỉ định theo giờ quốc tế
- getUTCPhút. Trả về số phút [0-59] trong ngày đã chỉ định theo giờ quốc tế
- getUTCMonth. Trả về tháng [0-11] trong ngày đã chỉ định theo giờ quốc tế
- getUTCSeconds. Trả về giây [0-59] trong ngày đã chỉ định theo giờ quốc tế
- được năm. Trả về năm [thường là 2-3 chữ số] trong ngày đã chỉ định theo giờ địa phương. Sử dụng getFullYear để thay thế
- đặt ngày. Đặt ngày trong tháng [1-31] cho một ngày cụ thể theo giờ địa phương
- setFullYear. Đặt năm đầy đủ [4 chữ số cho năm có 4 chữ số] cho một ngày cụ thể theo giờ địa phương
- đặt giờ. Đặt giờ [0-23] cho một ngày cụ thể theo giờ địa phương
- setMilliseconds. Đặt mili giây [0-999] cho một ngày cụ thể theo giờ địa phương
- setMinutes. Đặt phút [0-59] cho một ngày cụ thể theo giờ địa phương
- setMonth. Đặt tháng [0-11] cho một ngày cụ thể theo giờ địa phương
- setSeconds. Đặt giây [0-59] cho một ngày cụ thể theo giờ địa phương
- cài đặt thời gian. Đặt đối tượng Ngày thành thời gian được biểu thị bằng một số mili giây kể từ ngày 1 tháng 1 năm 1970, 00. 00. 00 UTC, cho phép số âm trong thời gian trước đó
- setUTCDate. Đặt ngày trong tháng [1-31] cho một ngày cụ thể theo giờ quốc tế
- setUTCFullYear. Đặt năm đầy đủ [4 chữ số cho năm có 4 chữ số] cho một ngày cụ thể theo giờ quốc tế
- đặtUTCGiờ. Đặt giờ [0-23] cho một ngày cụ thể theo giờ quốc tế
- setUTCMili giây. Đặt mili giây [0-999] cho một ngày cụ thể theo giờ quốc tế
- setUTCPhút. Đặt phút [0-59] cho một ngày cụ thể theo giờ quốc tế
- setUTCMonth. Đặt tháng [0-11] cho một ngày cụ thể theo giờ quốc tế
- setUTCSeconds. Đặt giây [0-59] cho một ngày cụ thể theo giờ quốc tế
- thiết lậpNăm. Đặt năm [thường là 2-3 chữ số] cho một ngày cụ thể theo giờ địa phương. Sử dụng setFullYear để thay thế
- toDateString. Trả về phần "ngày" của Ngày dưới dạng chuỗi mà con người có thể đọc được
Tôi hy vọng bạn sẽ thích bài viết này. Vui lòng cung cấp các đề xuất có giá trị của bạn