如何在2个日期之间获取数据

时间:2019-08-19 06:05:36

标签: javascript jquery laravel

在某些情况下,我想获取日期之间的数据。我想返回日期之间的数据,它总是给我错误的结果。

我尝试使用例如

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以及今年的数据。但这给出了错误的结果,我的代码有问题吗?

谢谢您回答这个问题。

4 个答案:

答案 0 :(得分:1)

  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`
  1. 使用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-282-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);