比较php中的开始日期时间和结束日期时间与Javascript中的日期

比较php中的开始日期时间和结束日期时间与Javascript中的日期,javascript,Javascript,在阅读了很多关于这个主题的问题后,我仍然有一些问题需要解决 我在JavaScript中比较日期和时间时遇到问题。我从一个有两条记录的数据表中读取startdate和enddate 我正在使用下面的行创建我的nowdate: nowdate = ('0' + (d.getMonth() + 1)).slice(-2) + "-" +('0' + d.getDate()).slice(-2) + "-" + d.getFullYear() + " " + ('0' + d.getHou

在阅读了很多关于这个主题的问题后,我仍然有一些问题需要解决

我在JavaScript中比较日期和时间时遇到问题。我从一个有两条记录的数据表中读取startdate和enddate

我正在使用下面的行创建我的nowdate:

    nowdate = ('0' + (d.getMonth() + 1)).slice(-2)  + "-" +('0' + d.getDate()).slice(-2)  + "-" + d.getFullYear()  + " " + ('0' + d.getHours()).slice(-2) + ":" + ('0' + d.getMinutes()).slice(-2);
这给了我:

Now date:   03-01-2019 11:28
Start date: 03-01-2019 23:59
End date :  03-08-2019 23:59

Now date:   03-01-2019 11:28
Start date: 04-01-2019 23:59
End date:   04-30-2019 23:59
然后我需要知道startdate和enddate是否介于现在和日期之间

if (new Date(startdate) >= new Date(nowdate) && new Date(nowdate) <= new Date(enddate)) {
console.log("Active: ");
} else if (new Date(nowdate) < new Date(enddate)) {
console.log("Scheduled: ");
} else {
console.log("Complete: ");
}
编辑代码:

// RECORD 1
MOMENT NOW DATE:  03-01-2019 14:03
MOMENT START DATE:  03-01-2019 23:03
MOMENT END DATE:  03-08-2019 23:03
// RECORD 2
MOMENT NOW DATE:  03-01-2019 14:03
MOMENT START DATE:  04-01-2019 23:04
MOMENT END DATE:  04-30-2019 23:04


var nowdate;
            var d = new Date();
            nowdate = (d.getFullYear() + "-" + ('0' + (d.getMonth() + 1)).slice(-2))  + "-" + ('0' + d.getDate()).slice(-2)  + " " + ('0' + d.getHours()).slice(-2) + ":" + ('0' + d.getMinutes()).slice(-2);

            nowdate = moment(nowdate).format('MM-DD-YYYY HH:MM');
            var startdate2 = moment(startdate2).format('MM-DD-YYYY HH:MM');
            var enddate2 = moment(enddate2).format('MM-DD-YYYY HH:MM');

            console.log("MOMENT NOW DATE: ", nowdate);
            console.log("MOMENT START DATE: ", startdate2);
            console.log("MOMENT END DATE: ", enddate2);

            if (startdate2 >= nowdate ||  enddate2 <= nowdate) {
                console.log("Active: ");
            } 

            else if (startdate2 > nowdate) {
                console.log("Scheduled: ");
            } 
我的问题是两个记录都显示为活动。安东能看出我哪里出错了吗


非常感谢您的帮助和时间。

如其他人所述,如果以这种方式使用新日期,您必须提供有效的日期格式字符串。您可以分析日期部分的字符串并构造它:

const dt = new Date(2019, 2, 1, 11, 28); // months are 0 index based
或者,您可以使用或之类的东西来解析日期,然后进行差异检查。Moment将为您提供最大的灵活性,以提供自己的格式进行解析


例如,通过向矩提供格式,可以使用矩以几乎任何格式正确解析日期字符串。假设您拥有后端的当前日期字符串,日期为03-01-2019 14:03。使用Moment,您可以通过const sd=Moment'03-01-2019 14:03','MM-DD-YYYY HH:MM'解析此内容。通过const now=Moment获取当前日期和时间。然后比较sd>now.

对于日期构造函数,您需要格式yyyy mm dd hh:mm,您的格式给出的日期无效。然后可以使用getTime或valueOf方法比较日期对象。如果您以前有一个日期对象,比如在nowdate代码中,我会首先使用它。您应该首先使用可排序的日期格式,如f.e.YYYY-MM-DD hh:MM-然后字符串比较就足够了,您不需要首先将值转换为日期实例。您好,我已经更改了日期的格式现在日期:2019-03-01 11:59开始日期:2019-03-01 23:59,结束日期:2019-03-08 23:59,但我仍然得到两个显示活动的记录。嗨,史蒂夫,我现在使用以下代码。它仍然将两条记录都返回为活动。你能看出我错在哪里吗。请参见编辑后的问题。谢谢。关于这个时刻,你把日期输出的格式和解析日期搞混了。请参阅我编辑的答案以获取帮助。