javascript - 如何在 jQuery 中解析日期字符串并检查它是否在过去

标签 javascript jquery date

我需要检查日期是否是过去的。这是我到目前为止所拥有的。 JSfiddle here .

var date = "09/12/2013";
var d = new Date();
var month = d.getMonth() + 1;
var day = d.getDate();
var todaysDate = +(('' + day).length < 2 ? '0' : '') + day + '/' + (('' + month).length < 2 ? '0' : '') + month + '/' + d.getFullYear();

if (date < todaysDate) {
    alert("in the past");
} else {
    alert("in the future");
}

目前它说的是过去的日期,而应该是 future 的日期。我知道我需要将字符串解析为日期,但不确定如何解析。

帮忙吗?

最佳答案

对于这种输入格式,您不能使用字符串比较,因为最不重要的值在左边。 注意:我假设日期是 2013 年 12 月 9 日。如果你在 2013 年 9 月 12 日做美国式的事情,你必须将索引调整到 部分 下面。

可以反转字段:

var date = "09/12/2013";
var parts = date.split('/');
date = parts[2] + "/" + parts[1] + "/" + parts[0];

...然后进行字符串比较(确保以相同的顺序构建“今天”的字符串——年/月/日)。

如果你要那样做,你可以继续完成工作

var date = "09/12/2013";
var parts = date.split('/');
var date = new Date(parseInt(parts[2], 10),     // year
                    parseInt(parts[1], 10) - 1, // month, starts with 0
                    parseInt(parts[0], 10));    // day
if (date < new Date()) {
    // It's in the past, including one millisecond ago
}

...但是当然,如​​果您不希望表达式在一毫​​秒前为真,您的字符串方法就可以了。

关于javascript - 如何在 jQuery 中解析日期字符串并检查它是否在过去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13532366/

相关文章:

javascript - 带有 Angular 6 的第 n 个子项的层次结构下拉列表。我希望选择父复选框需要隐藏所有子复选框

javascript - 在 Microsoft MVC 2 的可变长度列表中使用自定义验证器(客户端验证问题)

jquery - 你如何用 JQuery 找到非计算的 css 宽度

日期比较逻辑/液体模板过滤器中

date - 如何将带有时间(日期)类型的文件加载到 Hive 表中?

javascript - 如何将我的文本包装在滑动导航面板中?

javascript - 对象 #<HTMLFormElement> 的属性 'submit' 不是函数

c# - 使用 JavaScript 输入后显示确认文本框

javascript - spry菜单占据了整个页面的高度

java - java中获取Date类型对象的format