javascript - 将 php 中的开始日期时间和结束日期时间与 Javascript 中的日期进行比较
问题描述
在阅读了与此主题相关的许多问题后,我仍然遇到解决问题的问题。
我在比较 JavaScript 中的日期时间时遇到问题。我正在从有两条记录的数据表中读取“开始日期”和“结束日期”。
我正在使用下面的行来创建我的“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
然后我需要知道“开始日期”和“结束日期”是否在“现在日期”之间。
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: ");
}
我遇到的问题是两条记录都显示为“活动”。antone 可以看到我哪里出错了。
非常感谢您的帮助和时间。
解决方案
正如其他人所说,如果使用new Date()
这种方式,您必须提供有效的日期格式字符串。您可以解析日期部分的字符串并构造它:
const dt = new Date(2019, 2, 1, 11, 28); // months are 0 index based
或者,您可以使用MomentJs或Luxon 之类的工具来解析您的日期,然后进行差异检查。Moment 将为您提供最大的灵活性,以提供您自己的解析格式。
例如,您可以使用 Moment 通过向 Moment 提供格式来正确解析几乎任何格式的日期字符串。假设您有来自后端的当前日期字符串,如03-01-2019 14:03
. 使用 Moment,您可以通过const sd = moment('03-01-2019 14:03', 'MM-DD-YYYY HH:mm')
. 通过 Moment 获取当前日期const now = moment()
。然后比较sd > now
。
推荐阅读
- javascript - 我无法在反应中编辑输入字段
- flutter - flutter_svg 0.19.1 与 flutter_plugin_pdf_viewer 不兼容
- c# - 多动态列选择表达式树
- docker - .net 5 的 Docker 映像
- cryptography - 如何在 .NET Framework 中读取 ES512 私钥
- php - 在 wp-admin/admin-ajax.php?action=mypage_hook 上收到 400 个错误请求
- python - 有没有将函数输出映射到 Pandas DataFrame 或 Numpy 数组的好方法?
- javascript - 安装 Angular-bootrstap 时的错误
- onclick - Leaflet 使用按钮从 GoeJson 中删除功能属性
- python - Python从文件夹中导入所有函数