【问题标题】:Moment.js, Get next [weekday]Moment.js,获取下一个 [工作日]
【发布时间】:2017-03-05 19:23:05
【问题描述】:

尝试使用moment.js 获得第二个星期四(例如)。 不是这个星期四。下一个。 2 个星期四的日期。

我试过了

moment().add(1, 'week').day(4)

仅获取下周的星期四(仅在当前工作日在星期四之前有效)

有什么想法吗?

【问题讨论】:

标签: javascript date momentjs


【解决方案1】:

“仅获取下周的星期四(仅在当前工作日在星期四之前有效)”

发生这种情况是因为 .add(1, 'week') 只是增加了 7 天,并为您获取下一周的日期,而您正在获取该周的第 4 天。 下面的代码将非常适合您的情况。

if(moment().weekday() < 4)
 moment().add(1, 'week').day(4);
else
 moment().add(2, 'week').day(4);

【讨论】:

    【解决方案2】:

    不确定是否使用 moment.js,但在下周四的普通 js 中给出:

    currentDate + (11 - d.getDay() % 7)
    

    对于下一个星期四,只需增加 7 天。大概如果当天是星期四,那么想要两周后的星期四:

    var d = new Date();
    console.log(d.toString());
    
    // Shift to next Thursday
    d.setDate(d.getDate() + ((11 - d.getDay()) % 7 || 7) + 7)
    console.log(d.toString())

    或者通过一些测试封装在一个函数中:

    function nextThursdayWeek(d) {
      d = d || new Date();
      d.setDate(d.getDate() + ((11 - d.getDay()) % 7 || 7) + 7);
      return d;
    }
    
    // Test data
    [new Date(2017,2,6),  // Mon  6 Mar 2017
     new Date(2017,2,7),  // Tue  7 Mar 2017
     new Date(2017,2,8),  // Wed  8 Mar 2017
     new Date(2017,2,9),  // Thu  9 Mar 2017
     new Date(2017,2,10), // Fri 10 Mar 2017
     new Date(2017,2,11), // Sat 11 Mar 2017
     new Date(2017,2,12), // Sun 12 Mar 2017
     new Date()           // Today
    ].forEach(function (date) {
      console.log(date.toString() + ' -> ' + nextThursdayWeek(date).toString());
    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 2019-05-12
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多