Javascript-获取日期数组中的下一个可用日期

标签 javascript arrays date

我有一系列相隔两周星期日的日期:

var payPeriodArray = ['08/04/2019',
'08/18/2019',
'09/01/2019',
'09/15/2019',
'09/29/2019',
'10/13/2019',
'10/27/2019',
'11/10/2019',
'11/24/2019',
'12/08/2019',
'12/24/2019'
]

如果我想拉出今天(2019 年 9 月 3 日)之后的下一个星期日并将其设置为 suggest_start_date,我将如何使用 Javascript 做到这一点?

var proposed_start_date;

for(var i=0; i<payPeriodArray.length; i++){
        if(payPeriodArray[i].ppStart > today){
            proposed_start_date = ?
        }
    }

最佳答案

@RobG 提出了一个很好的观点,即不建议使用 new Date(d)。请参阅this question为什么。我已更改代码以使用 parseDate 函数。

<小时/>

您可以使用Date对象来比较日期。

    // parse a date in mm/dd/yyyy format
    function parseDate(input) {
      var parts = input.split('/');
      // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
      return new Date(parts[2], parts[0]-1, parts[1]); // Note: months are 0-based
    }

    var payPeriodArray = [
        '08/04/2019',
        '08/18/2019',
        '09/01/2019',
        '09/15/2019',
        '09/29/2019',
        '10/13/2019',
        '10/27/2019',
        '11/10/2019',
        '11/24/2019',
        '12/08/2019',
        '12/24/2019'
    ];

    var proposed_start_date, today = new Date();

    for(var i=0; i<payPeriodArray.length; i++){
        if(parseDate(payPeriodArray[i]) > today){
            proposed_start_date = payPeriodArray[i]
            break;
        }
    }
    
    console.log(proposed_start_date);

请注意我添加的break,一旦找到下一个付款周期就停止循环非常重要,否则您将始终获得数组中的最后一个日期。

您还可以使用 find 简化循环

    // parse a date in mm/dd/yyyy format
    function parseDate(input) {
      var parts = input.split('/');
      // new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
      return new Date(parts[2], parts[0]-1, parts[1]); // Note: months are 0-based
    }

    var payPeriodArray = [
        '08/04/2019',
        '08/18/2019',
        '09/01/2019',
        '09/15/2019',
        '09/29/2019',
        '10/13/2019',
        '10/27/2019',
        '11/10/2019',
        '11/24/2019',
        '12/08/2019',
        '12/24/2019'
    ];

    var proposed_start_date = payPeriodArray.find(d => parseDate(d) > new Date());
    
    console.log(proposed_start_date);

关于Javascript-获取日期数组中的下一个可用日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777881/

相关文章:

r - 将日期更改为数字形式以进行关联

arrays - 如何从一个可观察对象数组创建一个数组的可观察对象?

arrays - 如何创建一个静态字符串数组?

apache-flex - Flex,如何获得日期的一年中的一周?

javascript - 使用 Bootstrap 列时隐藏元素会影响其他不相关的元素

javascript - 如何从具有相同类的多个 div 中删除没有 <a> 标签的 div?

javascript - 在 Ext.Panel 中的元素之间添加边距

javascript - jQuery ajax load() javascript 没有执行?

c# - 如何拆分数组中的元素并将其作为新数组返回

postgresql - 识别 postgresql 中的无效日期