比较两个JavaScript字符串日期

6
我该如何比较以下两个日期?
var start_date = $('#start_date').text();
var end_date = $('#end_date').text();
alert(start_date + ' ' + end_date); // '2013-01-01 2013-01-02'

# how to do the following?
if (start_date > end_date) {...}

将这些字符串转换为本地JS“Date”对象。现在它们是字符串,并将使用字符串规则进行比较。 - Marc B
可能是使用JavaScript比较日期的重复问题。 - Jorge
如果您知道日期格式总是年-月-日,那么字符串比较就可以了。 - James Montagne
可能是重复的问题:如何在JavaScript中比较两个字符串日期? - epascarello
3个回答

20
如果日期格式总是这样的(yyyy-mm-dd/2013-01-01),那么您可以将其作为字符串进行比较。
var d1 = '2013-11-01', d2 = '2013-11-02';
console.log(d1 < d2); // true
//console.log(d1.getFullYear()); won't work, not date object

请参见字典顺序

字典顺序的一个重要应用体现在ISO 8601日期格式方案中,该方案将日期表示为YYYY-MM-DD。这种日期排序方式非常适合计算机化排序日期,因为排序算法不需要将日期字符串的数字部分与非数字字符的字符串区别对待,而且日期会按照时间顺序排序。但是需要注意的是,为了使其有效,年份必须始终包含四位数字,月份和日期各包含两位数字。

但是,您可以使用此方法来比较日期。

var d1 = new Date("11-01-2013");
var d2 = new Date("11-04-2013");
console.log(d1);
console.log(d1.getMonth()); // 10 (0-11)
console.log(d1.getFullYear()); // 2013
console.log(d1.getDate()); // 1
console.log(d1 < d2); // true

检查这个fiddle


1

1

尝试使用时间戳。

var date1 = +new Date("2013-11-01");
var date2 = +new Date("2013-11-04");

console.log(date1);
console.log(date2);

console.log(date1>date2);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接