使用Moment.js获取指定日期之后的特定工作日的日期

约书亚记

我正在尝试获取给定日期后一个工作日的下一个实例的日期。工作日可能是星期一至星期日的任何一天。我正在使用Moment.js库,但似乎没有一种简单的方法可以实现我所追求的目标。

这是我到目前为止的内容,但未返回我想要的日期:

// competition.startDate = 2016-02-10 (Wednesday)
var startDate = moment(competition.startDate);

...

for (m = 0; m < matchesPerRound; m++) {
    var date;

    ...

    // matchTime[m].day = 3 (Wednesday)
    date = startDate.startOf('week').add(7, 'days').subtract(matchTime[m].day, 'days');

    console.log(date.format('YYYY-MM-DD'));
    // Actual Output = 2016-02-11
    // Expected Output = 2016-02-10
    ...

}

对于上面的示例,我需要返回它,2016-02-15因为这是之后的下一个星期一2016-02-10没问题,我可以得到那个日期。我的问题是,我需要更具动态性的东西,就像matchTime[m].day任何工作日的数字一样。例如,如果为matchTime[m].day = 3 // Wednesday,则应该返回相同的startDate,2016-02-10因为这是星期三。

我试图尽可能避免使用条件语句,但是我想知道Moment.js是否具有开箱即用的功能来产生这些结果。

更新

我想出了一个解决方案,它可以满足我的要求,但我感到这很麻烦。别人有更清洁,更简洁的解决方案吗?

var date;
var startDate = moment(competition.startDate);
var proposedDate = moment(startDate).startOf('isoweek').add(matchTimes[0].day - 1, 'd');
if ( startDate.isAfter(proposedDate) ) {
    date = startDate.startOf('isoweek').add(7 + Number(matchTimes[0].day) - 1, 'd');
} else {
    date = startDate.startOf('isoweek').add(matchTimes[0].day - 1, 'd');
}
巴拉

这也是使用momentjs的可能答案(假设比赛日为0(星期日)-6):

var startDate = moment(competition.startDate);
var matchDay = Number(matchTimes[0].day);
var daysToAdd = Math.ceil((startDate.day() - matchDay) / 7) * 7 + matchDay;
var proposedDate = moment(startDate).startOf('week').add(daysToAdd, 'd');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用moment.js计算Javascript中两个日期之间的“工作日”数?

来自分类Dev

如何使用日历参考表在SQL Server中从给定日期计算工作日

来自分类Dev

Moment JS获取指定日期的下一个日期

来自分类Dev

使用日期参数计算工作日

来自分类Dev

使用moment.js获取到月底为止的工作日

来自分类Dev

使用moment.js获取上一个工作日

来自分类Dev

从特定日期减去工作日

来自分类Dev

使用Moment.js计算直到特定日期为止的天数

来自分类Dev

使用Moment.js查找当前星期几的特定日期

来自分类Dev

使用ShellScript比较给定日期是一个月的最后一个工作日

来自分类Dev

如何使用moment.js从日期获取日期名称

来自分类Dev

使用Moment.js从减去到日期获取日期

来自分类Dev

如何从Moment.js持续时间获取特定日期?

来自分类Dev

如何使用php获取特定日期

来自分类Dev

使用 DateTimeFormatter 获取本地特定日期

来自分类Dev

Moment.js的语言环境和特定日期格式

来自分类Dev

使用GNU日期从特定日期获取两周前的星期一日期

来自分类Dev

使用 moment 了解特定日期的数字类型中的日期和月份

来自分类Dev

使用moment.js验证ISO 8601日期

来自分类Dev

使用JavaScript获取日期范围内的特定日期

来自分类Dev

获取日期 + 3 天(使用特定日期)SQL

来自分类Dev

使用moment.js检查日期格式

来自分类Dev

使用moment.js修改日期

来自分类Dev

使用moment.js检查日期差异

来自分类Dev

使用moment.js验证日期

来自分类Dev

使用moment.js显示将来的日期

来自分类Dev

使用“每周工作日”频率构建日期向量。

来自分类Dev

如何使用moment.js获取日期范围

来自分类Dev

使用cp开关复制在特定日期之后修改的文件

Related 相关文章

热门标签

归档