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

Javascript 如何从数组中返回今天、今天和明天之前的日期数,javascript,arrays,momentjs,Javascript,Arrays,Momentjs,我有一个满是日期的数组。我想从这个数组中获得3个单独的信息 今天之前的日期数。更具体的日期是在现在之前,所以我需要包括小时、分钟和秒 从现在到当前日期结束之间的日期数 明天日期的日期数 来自数组的日期示例: "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在这方面会有所帮助,但我无法让它工作。我认为您不需要导入js框架来实现这一点 您可以

我有一个满是日期的数组。我想从这个数组中获得3个单独的信息

  • 今天之前的日期数。更具体的日期是在现在之前,所以我需要包括小时、分钟和秒
  • 从现在到当前日期结束之间的日期数
  • 明天日期的日期数
  • 来自数组的日期示例:

    "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在这方面会有所帮助,但我无法让它工作。

    我认为您不需要导入js框架来实现这一点

    您可以在纯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);
    
    const arrayOfDates=[“2019年11月2日11:22:28”,“2020年11月2日11:22:28”,
    "04/03/2019 11:33:54"];
    const TODAY=新日期();
    const END_OF_TODAY=新日期(TODAY.getFullYear()、TODAY.getMonth()、TODAY.getDay()、24、59、59);
    const END_OF_tomory=新日期(TODAY.getFullYear(),TODAY.getMonth(),TODAY.getDay()+1,24,59,59);
    让DatesBefortoday=[];
    让DatesBetween Now和EndofDate=[];
    让datesWithTomorrowsDate=[];
    对于(var i=0;i dateInArray)
    {
    DatesBefortoday.push(dateInArray);
    }
    //从现在到今天结束
    否则如果(今天结束>=dateInArray)
    {
    DatesBetween Now和EndofDate.push(dateInArray);
    }
    //从今天结束到明天结束
    否则如果(明天结束>=dateInArray)
    {
    datesWithTomorrowsDate.push(dateInArray);
    }
    }
    //1)“现在”之前的日期数
    日志(datesBeforeToday.length);
    //2)“现在”和当前日期结束之间的日期数
    日志(DatesBetween Now和EndofDate.length);
    //3)明天日期的日期数
    日志(datesWithTomorrowsDate.length);
    
    我认为您不需要导入JS框架来实现这一点

    您可以在纯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);
    
    const arrayOfDates=[“2019年11月2日11:22:28”,“2020年11月2日11:22:28”,
    "04/03/2019 11:33:54"];
    const TODAY=新日期();
    const END_OF_TODAY=新日期(TODAY.getFullYear()、TODAY.getMonth()、TODAY.getDay()、24、59、59);
    const END_OF_tomory=新日期(TODAY.getFullYear(),TODAY.getMonth(),TODAY.getDay()+1,24,59,59);
    让DatesBefortoday=[];
    让DatesBetween Now和EndofDate=[];
    让datesWithTomorrowsDate=[];
    对于(var i=0;i dateInArray)
    {
    DatesBefortoday.push(dateInArray);
    }
    //从现在到今天结束
    否则如果(今天结束>=dateInArray)
    {
    DatesBetween Now和EndofDate.push(dateInArray);
    }
    //从今天结束到明天结束
    否则如果(明天结束>=dateInArray)
    {
    datesWithTomorrowsDate.push(dateInArray);
    }
    }
    //1)“现在”之前的日期数
    日志(datesBeforeToday.length);
    //2)“现在”和当前日期结束之间的日期数
    日志(DatesBetween Now和EndofDate.length);
    //3)明天日期的日期数
    日志(datesWithTomorrowsDate.length);
    
    这是一种不使用moment.js的方法:

    var日期=[
    "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={之前:0,明天:0,之后:0}
    var tomorrow00=新日期(新日期().getTime()+24*60*60*1000);
    明天00。设定时间(0,0,0,0);
    var tomorrow24=新日期(new Date().getTime()+48*60*60*1000);
    明天24.设定小时数(0,0,0,0);
    tomorrow24.setTime(tomorrow24.getTime()-1)
    日期。forEach((日期)=>{
    var当前=新日期(日期);
    如果((当前>=tomorrow00)和&(当前日期.now())
    res.after++
    })
    
    console.log(res);
    这是一种不使用moment.js的方法:

    var日期=[
    "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={之前:0,明天:0,之后:0}
    var tomorrow00=新日期(新日期().getTime()+24*60*60*1000);
    明天00。设定时间(0,0,0,0);
    var tomorrow24=新日期(new Date().getTime()+48*60*60*1000);
    明天24.设定小时数(0,0,0,0);
    tomorrow24.setTime(tomorrow24.getTime()-1)
    日期。forEach((日期)=>{
    var当前=新日期(日期);
    如果((当前>=tomorrow00)和&(当前日期.now())
    res.after++
    })
    
    console.log(res);
    您尝试过什么?发布该代码以及其中的错误/问题。它是字符串数组吗?我尝试使用与此处相同的代码:数组看起来也是这样:1:“02/11/2019 11:22:28”2:“05/14/2019 12:17:49”3:“06/06/2019 09:00:00”4:“05/02/2019 11:05:30”您尝试过什么?发布该代码以及其中的错误/问题。它是字符串数组吗?我尝试使用与此处相同的代码:数组看起来也是这样:1:“02/11/2019 11:22:28”2:“05/14/2019 12:17:49”3:“06/06/2019 09:00:00”4:“05/02/2019 11:05:30”你是对的,它工作得非常好!非常感谢你的帮助!你是对的,它工作得非常好!非常感谢你的帮助!谢谢,它工作得很好。是的,没有必要使用矩。js谢谢你指出这一点!很高兴它工作得很好。它对你很有用,请接受/投票。谢谢。谢谢,它工作得很好。是的,有无需使用moment.js谢谢你指出这一点!很高兴它起了作用。它对你很有用,请接受/upvote。谢谢。