So sánh ngày tháng năm trong javascript | Laptrinhcanban.com

So sánh ngày tháng năm trong javascript

Hướng dẫn cách so sánh ngày tháng năm trong javascript. Bạn sẽ học được các cách cơ bản để so sánh ngày tháng năm trong javascript sau bài học này.

So sánh 2 ngày trong javascript bằng toán tử so sánh

Để so sánh 2 ngày trong javascript, chúng ta có thể dùng các toán tử so sánh như < <= > >= mà Kiyoshi đã giới thiệu trong bài Toán tử quan hệ và bài Toán tử so sánh bằng.

Ví dụ cụ thể, chúng ta so sánh 2 date trong javascript được tạo bởi hàm new Date như sau:

let date1 = new Date('2021-10-23');
let date2 = new Date('2021-10-22');

console.log(date1 > date2); //true
console.log(date1 >= date2); //true
console.log(date1 < date2); //false
console.log(date1 <= date2); //false

Lưu ý là chúng ta chỉ có thể dùng các toán tử so sánh để so sánh các date tạo bởi hàm new Date mà thôi. Đối với date tạo bởi hàm Date, do hàm Date trả về kết quả là chuỗi chứa thông tin thời gian của date, nên việc so sánh khi này sẽ trở thành so sánh 2 chuỗi khiến kết quả trở nên không còn đúng trong một số trường hợp.
Ví dụ:

let date1 = new Date();
let date2 = new Date(date1);

console.log(date1 == date2); //false
console.log(date1 === date2);//false
console.log(date1 != date2); //true
console.log(date1 !== date2);//true

So sánh 2 ngày trong javascript bằng phương thức getTime

Chúng ta đã biết phương thức getTime có tác dụng chuyển một date thành số mili giây đã trôi qua tính từ thời điểm ngày cơ chuẩn (1/1/1970 00:00:00 UTC).

Bằng cách chuyển 2 date về số mili giây tương ứng và so sánh số mili giây, chúng ta có thể dễ dàng so sánh so sánh 2 ngày trong javascript.

Ví dụ cụ thể:

function compare_date (date1, date2){
if (date1.getTime() < date2.getTime())
console.log("date1 is lesser than date2");
else if (date1.getTime() > date2.getTime())
console.log("date1 is greater than date2");
else
console.log("both are equal");

}

let d1 = new Date('2021-10-23');
let d2 = new Date('2021-10-22');

compare_date(d1, d1); //both are equal
compare_date(d1, d2); //date1 is greater than date2

So sánh 2 ngày trong javascript bằng phương thức valueOf

Chúng ta cũng đã biết phương thức valueOf có tác dụng chuyển một date thành số mili giây đã trôi qua dưới dạng kiểu số, tính từ thời điểm ngày cơ chuẩn (1/1/1970 00:00:00 UTC).

Do vậy, tương tự với cách dùng phương thức getTime thì bằng cách dùng phương thức valueOf để chuyển 2 date về số mili giây tương ứng dưới dạng kiểu số và so sánh số mili giây, chúng ta có thể dễ dàng so sánh so sánh 2 ngày trong javascript.

Ví dụ cụ thể:

function compare_date (date1, date2){
if (date1.valueOf() < date2.getTime())
console.log("date1 is lesser than date2");
else if (date1.valueOf() > date2.valueOf())
console.log("date1 is greater than date2");
else
console.log("both are equal");

}

let d1 = new Date('2021-10-23');
let d2 = new Date('2021-10-22');

compare_date(d1, d1); //both are equal
compare_date(d1, d2); //date1 is greater than date2

So sánh 2 ngày trong javascript bằng hàm Number()

Hàm Number() có tác dụng chuyển date thành số trong JavaScript. Về cơ chế hoạt động thì thực ra hàm này gọi phương thức valueOf để chuyển một date thành số mili giây đã trôi qua dưới dạng kiểu số, do vậy chúng ta cũng có thể dùng nó để thay thế cho phương thức valueOf khi cần so sánh 2 ngày trong javascript.

Ví dụ:

let date1 = new Date('2021-10-23');
let date2 = new Date('2021-10-22');

console.log(Number(date1) === Number(date2)) //false
console.log(Number(date1) == Number(date2) ) //false
console.log(Number(date1) < Number(date2)) //false
console.log(Number(date1) > Number(date2) ) //true

So sánh 2 date trong javascript bằng toán tử cộng

Tương tự với hàm Number() ở trên thì toán tử cộng + cũng có tác dụng chuyển date thành số trong JavaScript, và nó cũng gọi phương thức valueOf để chuyển một date thành số mili giây đã trôi qua dưới dạng kiểu số.

Do vậy chúng ta cũng có thể sử dụng toán tử cộng để so sánh 2 date trong javascript như sau:

let date1 = new Date('2021-10-23');
let date2 = new Date('2021-10-22');

console.log(+date1 === +date2) //false
console.log(+date1 == +date2) //false
console.log(+date1 < +date2) //false
console.log(+date1 > +date2) //true

So sánh tháng năm giờ phút trong javascript

Trong trường hợp chúng ta bỏ qua giá trị của ngày và chỉ muốn so sánh giữa các chỉ số khác như so sánh tháng năm giờ phút trong javascript, hãy sử dụng các phương thức thành viên như getFullYear(), getMonth(), getHours và getMinutes() mà chúng ta đã học trong bài Lấy ngày tháng năm trong JavaScript để lấy ra các thông tin về tháng, năm hoặc giờ, phút từ các date instance để tiến hành so sánh chúng với nhau.

Và do kết quả của các phương thức này đều ở kiểu số, nên chúng ta có thể sử dụng các toán tử so sánh để so sánh kết quả giữa chúng.

Ví dụ, chúng ta có thể so sánh tháng, so sánh năm, so sánh giờ trong javascript như sau:

let date1 = new Date('2021-10-23 18:13:06');
let date2 = new Date('2021-10-22 19:12:06');

console.log(date1.getFullYear() === date2.getFullYear()) //true
console.log(date1.getMonth() === date2.getMonth()) //true
console.log(date1.getHours() > date2.getHours()) //false
console.log(date1.getMinutes() < date2.getMinutes()) //false

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách so sánh ngày tháng năm trong javascript trong JavaScript rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.