我有两个字符串日期,格式为m / d / yyyy。例如,“11/1/2012”,“1/2/2013”。我在JavaScript中编写一个函数来比较两个字符串日期。我的功能的签名是
bool isLater(string1, string2),
如果string1传递的日期晚于string2传递的日期,则返回true,否则返回false。
因此,isLater(“1/2/2013”,“11/1/2012”)应该返回true。我如何为此编写JavaScript函数?
答案 0 :(得分:66)
var d1 = Date.parse("2012-11-01");
var d2 = Date.parse("2012-11-04");
if (d1 < d2) {
alert ("Error!");
}
答案 1 :(得分:7)
解析日期并按照数字进行比较:
function isLater(str1, str2)
{
return new Date(str1) > new Date(str2);
}
如果您需要支持其他日期格式,请考虑使用date.js等库。
答案 2 :(得分:3)
您可以简单地比较2个字符串
function isLater(dateString1, dateString2) {
return dateString1 > dateString2
}
然后
isLater("2012-12-01", "2012-11-01")
在
时返回trueisLater("2012-12-01", "2013-11-01")
返回false
答案 3 :(得分:1)
直接解析非yyyy-mm-dd格式的日期字符串(如accepted answer格式)不起作用。 vitran的答案确实有效,但是混入了一些JQuery,所以我做了一些修改。
// 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。本可以直接评论vitran的帖子,但我没有代表这样做。
答案 4 :(得分:0)
如果您的日期格式不符合标准格式yyyy-mm-dd(2017-02-06),例如20/06/2016。您可以使用此代码
var parts ='01/07/2016'.val().split('/');
var d1 = Number(parts[2] + parts[1] + parts[0]);
parts ='20/06/2016'.val().split('/');
var d2 = Number(parts[2] + parts[1] + parts[0]);
return d1 > d2
答案 5 :(得分:0)
您可以使用“ Date.parse()”来正确比较日期,但是由于在大多数注释中,人们试图拆分字符串,然后试图将数字加起来并与明显错误的逻辑进行比较-并不完全
这就是诀窍。如果您要破坏字符串,请比较嵌套格式的部分。
比较年,年,月,月和日。
<pre><code>
var parts1 = "26/07/2020".split('/');
var parts2 = "26/07/2020".split('/');
var latest = false;
if (parseInt(parts1[2]) > parseInt(parts2[2])) {
latest = true;
} else if (parseInt(parts1[2]) == parseInt(parts2[2])) {
if (parseInt(parts1[1]) > parseInt(parts2[1])) {
latest = true;
} else if (parseInt(parts1[1]) == parseInt(parts2[1])) {
if (parseInt(parts1[0]) >= parseInt(parts2[0])) {
latest = true;
}
}
}
return latest;
</code></pre>