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[]
và getTime[]
TLDR. Để so sánh ngày, bạn có thể sử dụng các hàmtoISOString[]
hoặcgetTime[]
được tích hợp trong1. Bài viết này chỉ chạy qua một vài ví dụ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[]
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[]
1Mã 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 độngHã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