在某些情况下,我想获取日期之间的数据。我想返回日期之间的数据,它总是给我错误的结果。
我尝试使用例如
date1 >= '1-28-2019' && date2 <= '2-8-2019'
它总是显示错误的结果。
let created_on = new Date(task['created-on'])
let month = created_on.getMonth() + 1
let date = created_on.getDate()
let year = created_on.getFullYear()
let date_now = new Date()
let year_now = date_now.getFullYear()
let combine = month + '-' + date
console.log(combine >= '1-28' && combine <= '2-8' && year_now == year)
我想获取从日期1-28到日期2-8以及今年的数据。但这给出了错误的结果,我的代码有问题吗?
谢谢您回答这个问题。
答案 0 :(得分:1)
slice
function leadingZero(str, len = 2) {
return (new Array(len).fill(0).join('') + str).slice(-len);
}
let combine = leadingZero(month) + '-' + leadingZero(date);
// 0128 for `1-28`, 0208 for `2-8`
Number
let combine = month * 100 + day;
// 128 for `1-28` 208 for `2-8`
答案 1 :(得分:1)
请检查MDN
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
let task = { 'created-on': new Date(2019, 1, 6) };
let created_on = new Date(task['created-on'])
let month = created_on.getMonth(); // Use index
let date = created_on.getDate()
let year = created_on.getFullYear()
let date_now = new Date()
let year_now = date_now.getFullYear()
// let combine = month + '-' + date
let startDate = new Date(year_now, 0, 28); // 0 - Jan
let endDate = new Date(year_now, 1, 8); // 1 - Feb
// direct compare with `created_on`
console.log(created_on >= startDate && created_on <= endDate); // year will be same if comparison is `true`
// compare with constructed date
let combine = new Date(year, month, date);
console.log(combine >= startDate && combine <= endDate);
答案 2 :(得分:0)
从字符串日期创建日期对象,然后进行比较。
date1 >= new Date(2019, 0, 28) && date2 <= new Date(2019, 1, 8)
如David784所说,多个Date构造函数之一是 Date(年,月,日)。根据{{3}},monthIndex从 0(一月)到 11(十二月)。
答案 3 :(得分:0)
您得到错误的结果,因为您希望比较日期(例如1-28
和2-8
),但实际上是在比较字符串! (请注意,combine
是一个字符串)。
您应该做的是比较日期。您可以通过设置年份whatever_year
来完成此操作,仅用于比较日期,它应该可以正常工作。
let created_on = new Date(task['created-on']);
let month = created_on.getMonth() + 1;
let date = created_on.getDate();
let year = created_on.getFullYear();
let date_now = new Date();
let year_now = date_now.getFullYear();
let whatever_year = '1500';
let combine = new Date(month + '-' + date + '-' + whatever_year);
let date1 = new Date('1-28-' + whatever_year);
let date2 = new Date('2-8-' + whatever_year);
console.log(combine >= date1 && combine <= date2 && year_now == year);