如何转换此字符串;2017年10月7日下午18:30”;到JavaScript日期类型

如何转换此字符串;2017年10月7日下午18:30”;到JavaScript日期类型,javascript,jquery,date,date-comparison,Javascript,Jquery,Date,Date Comparison,我试图读取表中的所有日期,看看这些日期是否比当前日期时间旧,如果这些日期是旧日期,则用一些颜色突出显示这些日期 这是我的Javascript代码 $(".ticket-gird-td-duedate").each(function(i, e) { debugger; var dueDateAsString = $(e).text(); console.log(dueDateAsString); var dueDate = new

我试图读取表中的所有日期,看看这些日期是否比当前日期时间旧,如果这些日期是旧日期,则用一些颜色突出显示这些日期

这是我的Javascript代码

$(".ticket-gird-td-duedate").each(function(i, e) {
        debugger;
        var dueDateAsString = $(e).text();
        console.log(dueDateAsString);  
        var dueDate = new Date(dueDateAsString);
        var currentdate = new Date();
        if (dueDate < currentdate) {
            //mark date in red color
            console.log("I need to change color for this date as this is past date" + dueDate);
        }
    }); 
它因无效日期错误而失败

无效日期


如何将字符串日期转换为Javascript日期并继续与当前日期进行比较?

这不是有效日期,因为您使用的是24小时格式或AM | PM 12小时格式

这项工作:

new Date('07/10/2017 18:30'); // No 'PM' after the 24hr time

还请注意,JS日期是可变的,因此
todayDate
check
将保持相同的日期值,但
check
将是一个数字。

您首先调用这个

todayDate.setDate(todayDate.getDate() - 5);
它将于今天更新到5天前。然后,您只需将其分配给check或您今天的日期

var check = todayDate;
希望这能有所帮助。

您可以通过使用库(这是实现日期解析的另一种非常好的方法)来实现这一点

矩.Js库免费提供。您可以根据需要使用此库的缩小版或完整版。在这个 库所有操作都在力矩对象上执行,因此 日期或时间仅作为力矩对象存储在此库中。所以 这个力矩对象是整个库的核心。你可以找到 这个图书馆在

momentjs
库引用添加到项目中-
https://momentjs.com/downloads/moment.js

使用moment.js更新的代码将是:

var todayDate = new moment().format("MM/DD/YYYY h:mm:ss a");
var yesterday = todayDate.toLocaleString();
var check = moment(todayDate, "MM/DD/YYYY h:mm:ss a").add('days', -5);    
alert("Your Old Date is- " + todayDate);
alert(check);
alert("Your Old Date is- " + yesterday);

没有Michal Hainc我需要javascript中的这个结果。你可以用
new Date()
包装
check
,就像这样:
var check=new Date(todayDate.setDate(todayDate.getDate()-5))嗯,你的代码在哪里有日期字符串?@Dinesh我理解不愿意为一些看起来应该很简单的东西引入一个大的honkin库,但唯一支持的跨浏览器日期字符串格式是。对于日期字符串,您必须使用矩或将其解析为整数值,以手动将其提供给日期构造函数。这在所有浏览器中都有效吗?IIRC-only ISO 8601是普遍支持的。@JaredSmith它在Chrome、Safari、FireFox、Edge和当前IE中都能工作。我不确定它的历史有多远,因为即使是最新的IE也是垃圾。ISO格式要好得多,因为这个日期在不同文化之间是不明确的(美国,因此JS,默认为mm/dd/yyyy,而其他人都是dd/mm/yyyy)。考虑到IE的市场份额正在消失,一点也不在乎是可以原谅的。回答很好,很简单。
var todayDate = new moment().format("MM/DD/YYYY h:mm:ss a");
var yesterday = todayDate.toLocaleString();
var check = moment(todayDate, "MM/DD/YYYY h:mm:ss a").add('days', -5);    
alert("Your Old Date is- " + todayDate);
alert(check);
alert("Your Old Date is- " + yesterday);