我有两个格式为 m/d/yyyy 的字符串日期。例如,“2012 年 11 月 1 日”、“2013 年 1 月 2 日”。我正在用 JavaScript 编写一个函数来比较两个字符串日期。我的函数的签名是
bool isLater(string1, string2),
如果string1传递的日期晚于string2传递的日期,它将返回true,否则返回false。因此,isLater(“1/2/2013”, “11/1/2012”) 应该返回 true。如何为此编写 JavaScript 函数?
问问题
175715 次
6 回答
139
var d1 = Date.parse("2012-11-01");
var d2 = Date.parse("2012-11-04");
if (d1 < d2) {
alert ("Error!");
}
最近从评论中发现,您可以直接比较如下字符串
if ("2012-11-01" < "2012-11-04") {
alert ("Error!");
}
于 2013-02-08T20:57:33.857 回答
17
您可以简单地比较 2 个字符串
function isLater(dateString1, dateString2) {
return dateString1 > dateString2
}
然后
isLater("2012-12-01", "2012-11-01")
返回真,而
isLater("2012-12-01", "2013-11-01")
返回假
于 2017-03-13T10:03:38.533 回答
13
解析日期并像数字一样比较它们:
function isLater(str1, str2)
{
return new Date(str1) > new Date(str2);
}
如果您需要支持其他日期格式,请考虑使用date.js等库。
于 2013-02-08T20:54:42.223 回答
2
直接解析不是 yyyy-mm-dd 格式的日期字符串,就像在接受的答案中一样不起作用。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;
}
PS 会直接评论 vitran 的帖子,但我没有代表这样做。
于 2018-08-22T12:57:31.343 回答
-1
如果您的日期不是标准格式 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
于 2017-04-27T15:00:48.393 回答
-1
您可以使用“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>
于 2020-07-23T18:38:09.673 回答