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);

console

.log(date1 >= date2);

console

.log(date1 < date2);

console

.log(date1 <= date2);

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);

console

.log(date1 === date2);

console

.log(date1 != date2);

console

.log(date1 !== date2);

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);


compare_date(d1, d2);


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);


compare_date(d1, d2);


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))

console

.log(

Number

(date1) ==

Number

(date2) )

console

.log(

Number

(date1) <

Number

(date2))

console

.log(

Number

(date1) >

Number

(date2) )

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)

console

.log(+date1 == +date2)

console

.log(+date1 < +date2)

console

.log(+date1 > +date2)

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())

console

.log(date1.getMonth() === date2.getMonth())

console

.log(date1.getHours() > date2.getHours())

console

.log(date1.getMinutes() < date2.getMinutes())

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.