Hướng dẫn compare date string javascript - so sánh chuỗi ngày javascript

Tôi có hai ngày chuỗi ở định dạng m/d/yyyy. Ví dụ: 11/1/1/2012 ,, 1/2/2013. Tôi đang viết một chức năng trong JavaScript để so sánh hai ngày chuỗi. Chữ ký của chức năng của tôi là

if ("2012-11-01" < "2012-11-04") {
    alert ("Error!");
}
2 Nếu ngày được truyền bởi String1 muộn hơn so với ngày được truyền bởi String2, nó sẽ trả về đúng, nếu không thì sai. Vì vậy, Islater (Hồi 1/2/2013 ,, 11/1/2012) sẽ trả về đúng. Làm cách nào để viết một chức năng JavaScript cho việc này?

Đã hỏi ngày 8 tháng 2 năm 2013 lúc 20:52Feb 8, 2013 at 20:52

Hướng dẫn compare date string javascript - so sánh chuỗi ngày javascript

3

var d1 = Date.parse("2012-11-01");
var d2 = Date.parse("2012-11-04");
if (d1 < d2) {
    alert ("Error!");
}

Demo jsfiddle

Gần đây được phát hiện từ một nhận xét mà bạn có thể so sánh trực tiếp các chuỗi như dưới đây

if ("2012-11-01" < "2012-11-04") {
    alert ("Error!");
}

Đã trả lời ngày 8 tháng 2 năm 2013 lúc 20:57Feb 8, 2013 at 20:57

GarrygarryGarry

4.8195 Huy hiệu vàng31 Huy hiệu bạc44 Huy hiệu đồng5 gold badges31 silver badges44 bronze badges

8

Bạn chỉ có thể so sánh 2 chuỗi

function isLater(dateString1, dateString2) {
  return dateString1 > dateString2
}

sau đó

isLater("2012-12-01", "2012-11-01")

trả về đúng trong khi

isLater("2012-12-01", "2013-11-01")

trả về sai

Đã trả lời ngày 13 tháng 3 năm 2017 lúc 10:03Mar 13, 2017 at 10:03

Fuyifuyifuyi

2.4654 Huy hiệu vàng22 Huy hiệu bạc44 Huy hiệu đồng4 gold badges22 silver badges44 bronze badges

7

Phân tích các ngày và so sánh chúng như bạn sẽ là số:

function isLater(str1, str2)
{
    return new Date(str1) > new Date(str2);
}

Nếu bạn cần hỗ trợ định dạng ngày khác, hãy xem xét một thư viện như Date.js.

Đã trả lời ngày 8 tháng 2 năm 2013 lúc 20:54Feb 8, 2013 at 20:54

Hướng dẫn compare date string javascript - so sánh chuỗi ngày javascript

Matt Zeunertmatt ZeunertMatt Zeunert

15.7K6 Huy hiệu vàng 50 Huy hiệu bạc78 Huy hiệu Đồng6 gold badges50 silver badges78 bronze badges

3

Trực tiếp phân tích một chuỗi ngày không ở định dạng Yyyy-MM-DD, như trong câu trả lời được chấp nhận không hoạt động. Câu trả lời của Vitran không hoạt động nhưng có một số jQuery trộn lẫn vì vậy tôi đã làm lại nó một chút.

// Takes two strings as input, format is dd/mm/yyyy
// returns true if d1 is smaller than or equal to d2

function compareDates(d1, d2){
var parts =d1.split('/');
var d1 = Number(parts[2] + parts[1] + parts[0]);
parts = d2.split('/');
var d2 = Number(parts[2] + parts[1] + parts[0]);
return d1 <= d2;
}

P.S. Sẽ có ý kiến ​​trực tiếp với bài viết của Vitran nhưng tôi không có đại diện để làm điều đó.

Đã trả lời ngày 22 tháng 8 năm 2018 lúc 12:57Aug 22, 2018 at 12:57

7

Điều này làm việc cho tôi trong nextjs/React

import { format, parse, isBefore } from "date-fns";

...

{isBefore(new Date(currentDate), new Date(date)) ? (
 Upcoming Event
) : (
 Past Event
)}

...

isBefore(date, dateToCompare)

https://date-fns.org/docs/isbefore

Đã trả lời ngày 21 tháng 10 lúc 18:30Oct 21 at 18:30

Hướng dẫn compare date string javascript - so sánh chuỗi ngày javascript

Atazminatazminatazmin

Phù hiệu vàng 3.9031 Huy hiệu bạc17 Huy hiệu đồng1 gold badge22 silver badges17 bronze badges

Bạn có thể sử dụng "date.parse ()" để so sánh đúng ngày, nhưng vì trong hầu hết các bình luận, mọi người đang cố gắng chia chuỗi và sau đó cố gắng thêm các chữ số và so sánh với logic rõ ràng sai -không hoàn toàn.

Đây là mẹo. Nếu bạn đang phá vỡ chuỗi thì hãy so sánh các phần ở định dạng lồng nhau.

So sánh năm với năm, tháng với tháng và ngày với ngày.

if ("2012-11-01" < "2012-11-04") {
    alert ("Error!");
}
0

Đã trả lời ngày 23 tháng 7 năm 2020 lúc 18:38Jul 23, 2020 at 18:38

Hướng dẫn compare date string javascript - so sánh chuỗi ngày javascript

Nếu ngày của bạn không ở định dạng standar yyyy-mm-dd (2017-02-06), ví dụ 20/06/2016. Bạn có thể sử dụng mã này

if ("2012-11-01" < "2012-11-04") {
    alert ("Error!");
}
1

Đã trả lời ngày 27 tháng 4 năm 2017 lúc 15:00Apr 27, 2017 at 15:00

1