首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从数组中返回今天、今天和明天之前的日期数

如何从数组中返回今天、今天和明天之前的日期数
EN

Stack Overflow用户
提问于 2019-04-03 15:38:22
回答 2查看 119关注 0票数 0

我有满排的日期。我想从这个数组中得到三个单独的信息。

  1. 今天之前的日期。更具体的日期之前,所以我需要包括小时,分钟和秒。
  2. 从现在到当前日期结束之间的日期数
  3. 明天日期的日期数目

数组中的示例日期:

代码语言:javascript
复制
"02/11/2019 11:22:28",
"05/14/2019 12:17:49",
"06/06/2019 09:00:00",
"05/02/2019 11:05:30"

我相信moment.js在这里会有所帮助,但我无法使它发挥作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-03 15:59:21

我不认为您需要导入JS框架才能做到这一点。

您可以在普通的Dates中比较JavaScript。

代码语言:javascript
复制
const arrayOfDates = ["02/11/2019 11:22:28", "02/11/2020 11:22:28",
"04/03/2019 11:33:54"];

const TODAY = new Date();
const END_OF_TODAY = new Date(TODAY.getFullYear(), TODAY.getMonth(), TODAY.getDay(), 24, 59, 59);
const END_OF_TOMORROW = new Date(TODAY.getFullYear(), TODAY.getMonth(), TODAY.getDay() + 1, 24, 59, 59);

let datesBeforeToday = [];
let datesBetweenNowAndEndOfDate = [];
let datesWithTomorrowsDate = [];

for (var i=0; i<arrayOfDates.length; i++)
{
    var dateInArray = new Date(arrayOfDates[i]);
    // Before today
    if (TODAY > dateInArray)
    {
        datesBeforeToday.push(dateInArray);
    }
    // between now - end of today
    else if (END_OF_TODAY >= dateInArray)
    {
        datesBetweenNowAndEndOfDate.push(dateInArray);
    }
    // between end of today - end of tomorrow
    else if (END_OF_TOMORROW >= dateInArray)
    {
        datesWithTomorrowsDate.push(dateInArray);
    }
}

// 1) Number of dates before 'now'
console.log(datesBeforeToday.length);
// 2) Number of dates between 'now' and the end of the current date
console.log(datesBetweenNowAndEndOfDate.length);
// 3) Number of dates with tomorrow date
console.log(datesWithTomorrowsDate.length);
票数 1
EN

Stack Overflow用户

发布于 2019-04-03 16:05:16

这是不使用moment.js的一种方法:

代码语言:javascript
复制
var dates = [
"11/02/2018 11:22:28",
"02/02/2019 11:22:28",
"04/04/2019 11:22:28",
"10/03/2019 11:22:28",
"11/02/2019 11:22:28"
];

var res = { before: 0, tomorrow: 0, after: 0 }
var tomorrow00 = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
tomorrow00.setHours(0, 0, 0, 0);
var tomorrow24 = new Date(new Date().getTime() + 48 * 60 * 60 * 1000);
tomorrow24.setHours(0, 0, 0, 0);
tomorrow24.setTime(tomorrow24.getTime() - 1)

dates.forEach((date)=>{
    var current = new Date(date);
    if ((current >= tomorrow00) && (current <= tomorrow24))
        res.tomorrow++;
    else if (current < Date.now())
        res.before++;
    else if (current > Date.now())
        res.after++
})

console.log(res);

这是一种使用moment.js解决问题的方法

代码语言:javascript
复制
var dates = [
"11/02/2018 11:22:28",
"02/02/2019 11:22:28",
"04/04/2019 11:22:28",
"10/03/2019 11:22:28",
"11/02/2019 11:22:28"
];

var res = { before: 0, tomorrow: 0, after: 0 };
const tomorrow00 = moment().add(1, 'day').startOf('day');
const tomorrow24 = moment().add(1, 'day').endOf('day');

dates.forEach((date)=>{
    var current = moment(date, "MM/DD/YYYY HH:mm:ss");

    if ((current.isAfter(tomorrow00)) && (current.isBefore(tomorrow24)) )
        res.tomorrow++;
    else if (current.isBefore(moment().startOf('day')))
        res.before++;
    else if (current.isAfter(moment().endOf('day')))
        res.after++
})

console.log(res);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55499075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档