So sánh ngày trong javascript yyyy-mm-dd

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách so sánh ngày tháng với TypeScript hoặc JavaScript. Làm việc với ngày tháng có thể là một trải nghiệm khó khăn nhưng việc so sánh chúng cũng không quá tệ vì nó hoạt động giống như so sánh đối tượng chung

Chúng ta sẽ bắt đầu bằng cách xem ngày tháng và cách chúng hoạt động khi so sánh chúng, sau đó chúng ta sẽ xem xét toISOString()getTime()

TLDR. Để so sánh ngày, bạn có thể sử dụng các hàm toISOString() hoặc getTime() được tích hợp trong
function directDateComparison() {
  console.log('\ngetTimeDateComparison')
  console.log('=====================\n')

  // 1. Abstract equality check
  if (dateOne == dateTwo) {
    console.log('Dates are the same: Abstract equality')
  } else {
    console.log('Date are not the same: Abstract equality')
  }

  // 2. Strict equality check
  if (dateOne === dateTwo) {
    console.log('Dates are the same: Strict equality')
  } else {
    console.log('Date are not the same: Strict equality')
  }

  // 3. Greater than check 
  if (dateOne > dateTwo) {
    console.log('dateOne is greater than dateTwo')
  } else {
    console.log('dateOne is not greater than dateTwo')
  }

  // 4. Less than check 
  if (dateOne < dateTwo) {
    console.log('dateOne is less than dateTwo')
  } else {
    console.log('dateOne is not less than dateTwo')
  }
}

directDateComparison()
1. Bài viết này chỉ chạy qua một vài ví dụ
GHI CHÚ. Bạn có thể tìm repo cho mã này tại đây - https. //github. com/programmingwithswift/CompareDatesWithTypeScriptOrJavaScript

Đây là giao diện của tệp của tôi trước khi chúng tôi bắt đầu so sánh

const dateOne = new Date('2021-05-10')
const dateTwo = new Date('2021-05-10')

console.log(dateOne)
console.log(dateTwo

Không có gì đặc biệt, chúng tôi đang tạo hai ngày, cả hai ngày đều giống nhau và sau đó chúng tôi in ngày đó ra bàn điều khiển để có thể xem kết quả của mã

Đối với mỗi phần bên dưới, tôi đã tạo một hàm với một vài toán tử so sánh để chúng ta có thể thấy các phép so sánh này hoạt động như thế nào

So sánh ngày trực tiếp

Như tiêu đề của phần này đã nói, chúng ta sẽ xem xét so sánh ngày trực tiếp, tôi. so sánh trực tiếp các đối tượng

function directDateComparison() {
  console.log('\ngetTimeDateComparison')
  console.log('=====================\n')

  // 1. Abstract equality check
  if (dateOne == dateTwo) {
    console.log('Dates are the same: Abstract equality')
  } else {
    console.log('Date are not the same: Abstract equality')
  }

  // 2. Strict equality check
  if (dateOne === dateTwo) {
    console.log('Dates are the same: Strict equality')
  } else {
    console.log('Date are not the same: Strict equality')
  }

  // 3. Greater than check 
  if (dateOne > dateTwo) {
    console.log('dateOne is greater than dateTwo')
  } else {
    console.log('dateOne is not greater than dateTwo')
  }

  // 4. Less than check 
  if (dateOne < dateTwo) {
    console.log('dateOne is less than dateTwo')
  } else {
    console.log('dateOne is not less than dateTwo')
  }
}

directDateComparison()
1

Mã mà tôi có trông như thế này

function directDateComparison() {
  console.log('\ngetTimeDateComparison')
  console.log('=====================\n')

  // 1. Abstract equality check
  if (dateOne == dateTwo) {
    console.log('Dates are the same: Abstract equality')
  } else {
    console.log('Date are not the same: Abstract equality')
  }

  // 2. Strict equality check
  if (dateOne === dateTwo) {
    console.log('Dates are the same: Strict equality')
  } else {
    console.log('Date are not the same: Strict equality')
  }

  // 3. Greater than check 
  if (dateOne > dateTwo) {
    console.log('dateOne is greater than dateTwo')
  } else {
    console.log('dateOne is not greater than dateTwo')
  }

  // 4. Less than check 
  if (dateOne < dateTwo) {
    console.log('dateOne is less than dateTwo')
  } else {
    console.log('dateOne is not less than dateTwo')
  }
}

directDateComparison()

Nếu bạn chạy chức năng trên, bạn sẽ nhận được đầu ra sau (hãy nhớ rằng tôi có hai nhật ký bảng điều khiển đó ở đầu tệp sẽ in hai ngày)

2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

getTimeDateComparison
=====================

Date are not the same: Abstract equality
Date are not the same: Strict equality
dateOne is greater than dateTwo
dateOne is not less than dateTwo

Hãy chạy qua mã, nó sẽ chạy rất nhanh vì không có nhiều điều để nói sau khi xem đầu ra ở trên

1. Kiểm tra bình đẳng trừu tượng

Kiểm tra đầu tiên là đẳng thức trừu tượng. Kiểm tra này không thành công, điều này có lý vì khi so sánh hai đối tượng với nhau, nó sẽ không bao giờ đúng

2. Kiểm tra bình đẳng nghiêm ngặt

Điều này tương tự với kiểm tra đẳng thức trừu tượng, nó cũng sẽ thất bại vì so sánh đối tượng không thành công

3. Lớn hơn kiểm tra

Vì một số lý do, tôi đã mong đợi việc kiểm tra lớn hơn và ít hơn sẽ hoạt động. Kiểm tra lớn hơn cũng sẽ sai

4. Ít hơn kiểm tra

Tương tự như trên, điều này cũng không hoạt động

Không phép so sánh nào mà chúng ta thực hiện trên đối tượng

function directDateComparison() {
  console.log('\ngetTimeDateComparison')
  console.log('=====================\n')

  // 1. Abstract equality check
  if (dateOne == dateTwo) {
    console.log('Dates are the same: Abstract equality')
  } else {
    console.log('Date are not the same: Abstract equality')
  }

  // 2. Strict equality check
  if (dateOne === dateTwo) {
    console.log('Dates are the same: Strict equality')
  } else {
    console.log('Date are not the same: Strict equality')
  }

  // 3. Greater than check 
  if (dateOne > dateTwo) {
    console.log('dateOne is greater than dateTwo')
  } else {
    console.log('dateOne is not greater than dateTwo')
  }

  // 4. Less than check 
  if (dateOne < dateTwo) {
    console.log('dateOne is less than dateTwo')
  } else {
    console.log('dateOne is not less than dateTwo')
  }
}

directDateComparison()
1 sẽ hoạt động như mong đợi. Vì vậy, làm cách nào để so sánh ngày tháng trong TypeScript hoặc JavaScript?

Trước tiên chúng ta hãy xem toISOString() trong phần tiếp theo

So sánh ngày chuỗi ISO

Chúng tôi đã xem xét các so sánh trực tiếp của

function directDateComparison() {
  console.log('\ngetTimeDateComparison')
  console.log('=====================\n')

  // 1. Abstract equality check
  if (dateOne == dateTwo) {
    console.log('Dates are the same: Abstract equality')
  } else {
    console.log('Date are not the same: Abstract equality')
  }

  // 2. Strict equality check
  if (dateOne === dateTwo) {
    console.log('Dates are the same: Strict equality')
  } else {
    console.log('Date are not the same: Strict equality')
  }

  // 3. Greater than check 
  if (dateOne > dateTwo) {
    console.log('dateOne is greater than dateTwo')
  } else {
    console.log('dateOne is not greater than dateTwo')
  }

  // 4. Less than check 
  if (dateOne < dateTwo) {
    console.log('dateOne is less than dateTwo')
  } else {
    console.log('dateOne is not less than dateTwo')
  }
}

directDateComparison()
1, bây giờ chúng tôi sẽ xem xét sử dụng toISOString(). Nếu bạn không muốn đọc phần còn lại của phần này, thì phần này sẽ hoạt động giống như cách so sánh chuỗi bình thường hoạt động

Hãy nhìn vào mã

________số 8_______

Nếu bạn chạy chức năng trên, đầu ra sẽ như thế này

2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

isoStringDateComparison
=====================

dateOne is equal to dateTwo: Abstract equality - toISOString()
dateOne is equal to dateTwo: Strict equality - toISOString()
dateOne is not greater than dateTwo: toISOString()
dateOne is not less than dateTwo: toISOString()

1. Kiểm tra đẳng thức trừu tượng tớiISOString()

Ah. Chúng tôi thấy rằng điều này bây giờ sẽ hoạt động, điều này có ý nghĩa vì giá trị chuỗi được trả về bởi toISOString() sẽ giống nhau cho các ngày. Như đã đề cập trước đó, điều này hoạt động giống như bất kỳ phép so sánh chuỗi nào khác

2. Kiểm tra bình đẳng nghiêm ngặt tớiISOString()

Cái này cũng giống như cái trên, nó sẽ hoạt động vì nó đang làm việc với một chuỗi

3. Tốt hơn là check toISOString()

Điều này hoạt động như mong đợi là tốt. Chúng ta có thể sử dụng kiểm tra lớn hơn để xem liệu một ngày có lớn hơn ngày khác không

4. Ít hơn kiểm tra toISOString()

Điều này cũng hoạt động, như mong đợi nếu kiểm tra lớn hơn hoạt động

Bây giờ chúng ta đã thấy rằng nếu chúng ta sử dụng toISOString(), chúng ta có thể so sánh các ngày một cách dễ dàng, bất kể đó là phép kiểm tra bằng nhau hay nếu đó là phép kiểm tra lớn hơn/nhỏ hơn

So sánh ngày giờ

So sánh thời gian sẽ là cách cuối cùng để chúng tôi so sánh ngày tháng. Chúng ta sẽ sử dụng hàm getTime(), như trước đây, nếu bạn không muốn đọc phần này, hàm này sẽ hoạt động giống như so sánh hai số

Hãy nhìn vào mã

function getTimeDateComparison() {
  console.log('\ngetTimeDateComparison')
  console.log('=====================\n')
  
  // 1. Abstract equality check getTime()
  if (dateOne.getTime() == dateTwo.getTime()) {
    console.log('dateOne is equal to dateTwo: Abstract eqaulity - getTime()')
  } else {
    console.log('dateOne is not equal to dateTwo: Abstract eqaulity - getTime()')
  }

  // 2. Strict equality check getTime()
  if (dateOne.getTime() === dateTwo.getTime()) {
    console.log('dateOne is equal to dateTwo: Strict eqaulity - getTime()')
  } else {
    console.log('dateOne is not equal to dateTwo: Strict eqaulity - getTime()')
  }

  // 3. Greater than check getTime()
  if (dateOne.getTime() > dateTwo.getTime()) {
    console.log('dateOne is greater than dateTwo: getTime()')
  } else {
    console.log('dateOne is not greater than dateTwo: getTime()')
  }

  // 4. Less than check getTime()
  if (dateOne.getTime() < dateTwo.getTime()) {
    console.log('dateOne is less than dateTwo: getTime()')
  } else {
    console.log('dateOne is not less than dateTwo: getTime()')
  }
}

getTimeDateComparison()

Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được đầu ra sau

2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

getTimeDateComparison
=====================

dateOne is equal to dateTwo: Abstract eqaulity - getTime()
dateOne is equal to dateTwo: Strict eqaulity - getTime()
dateOne is not greater than dateTwo: getTime()
dateOne is not less than dateTwo: getTime()

1. Kiểm tra đẳng thức trừu tượng getTime()

Giống như

2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

getTimeDateComparison
=====================

Date are not the same: Abstract equality
Date are not the same: Strict equality
dateOne is greater than dateTwo
dateOne is not less than dateTwo
3 sử dụng
2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

getTimeDateComparison
=====================

Date are not the same: Abstract equality
Date are not the same: Strict equality
dateOne is greater than dateTwo
dateOne is not less than dateTwo
4 hoạt động và sẽ so sánh ngày chính xác. Điều này hợp lý vì
2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

getTimeDateComparison
=====================

Date are not the same: Abstract equality
Date are not the same: Strict equality
dateOne is greater than dateTwo
dateOne is not less than dateTwo
4 sẽ trả về một số

2. Kiểm tra bình đẳng nghiêm ngặt getTime()

Điều tương tự cũng xảy ra đối với kiểm tra bình đẳng nghiêm ngặt vì nó cũng hoạt động với các số

3. Tốt hơn là kiểm tra getTime()

Theo dự kiến, kiểm tra lớn hơn cũng sẽ hoạt động với các số, như thường lệ

4. Ít hơn kiểm tra getTime()

Cuối cùng nhưng không kém phần quan trọng, kiểm tra nhỏ hơn cũng sẽ hoạt động trên một số

Phần kết luận

Nếu muốn so sánh ngày tháng, chúng ta cần sử dụng các hàm như

2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

getTimeDateComparison
=====================

Date are not the same: Abstract equality
Date are not the same: Strict equality
dateOne is greater than dateTwo
dateOne is not less than dateTwo
3 hoặc
2021-05-10T00:00:00.000Z
2021-05-09T23:00:00.000Z

getTimeDateComparison
=====================

Date are not the same: Abstract equality
Date are not the same: Strict equality
dateOne is greater than dateTwo
dateOne is not less than dateTwo
4 để trả về kiểu dữ liệu mà chúng ta có thể sử dụng với các toán tử so sánh, nếu không, việc cố gắng so sánh các đối tượng sẽ không hiệu quả cho mục đích của chúng ta

Làm cách nào để so sánh hai ngày ở định dạng yyyy mm dd trong javascript?

hàm so sánh() { var d1=new Date('2020-01-23'); . var d2=new Date('21-01-2020'); .

Làm cách nào để so sánh hai định dạng ngày khác nhau trong JavaScript?

Để xử lý so sánh đẳng thức, chúng tôi sử dụng đối tượng ngày cùng với phương thức ngày getTime() trả về số mili giây. Nhưng nếu chúng ta muốn so sánh thông tin cụ thể như ngày, tháng, v.v., chúng ta có thể sử dụng các phương thức ngày khác như getDate(), getHours(), getDay(), getMonth() và getYear()

Làm cách nào để chỉ so sánh các ngày trong JavaScript?

Bạn có thể sử dụng < , > , khi so sánh trực tiếp các đối tượng Ngày vì các toán tử này trước tiên chuyển đổi đối tượng Ngày theo . valueOf() trước khi toán tử thực hiện phép so sánh.

Làm cách nào để so sánh hai chuỗi ngày trong js?

Để so sánh hai chuỗi ngày. .
Truyền các chuỗi cho hàm tạo Date() để tạo 2 đối tượng Date
So sánh kết quả từ việc gọi phương thức getTime() vào các ngày