从固定日期的下周五找到

时间:2014-10-21 19:27:57

标签: javascript momentjs

我想知道从给定日期开始的下一个日期。我正在使用时刻js,下面是我的代码。

var startDate = moment("10/1/2014");
var nf = startDate.day("Friday");

alert(startDate);
alert(nf);

代码将在下周五返回,但上面的代码正在将原始对象(startDate)也更改为下一个星期五。返回的对象是一个复杂的对象,不确定要使用哪个属性。

使用完整代码更新问题。

var startDate = moment("10/1/2014");
var endDate = moment( '10/31/2014');

var diff = endDate.diff(startDate,'days');

var noOfWeeks = diff / 7;

var nextStartday = startDate;
var nextFriday = moment( startDate).day("Friday");

for (var j = 0; j < noOfWeeks ; j++) {
    newRow.PlStartDateandTime = nextStartday;
    newRow.PlEndDateandTime = nextFriday;

    nextStartday = moment( nextFriday).day("Monday");
    nextFriday = moment( nextStartday).day("Friday");
}

我的期望是找到给定时间范围之间的工作日。

2 个答案:

答案 0 :(得分:6)

尝试:

var startDate = moment("10/1/2014");
var nf = moment("10/1/2014").day("Friday");

alert(startDate);
alert(nf);

您也可以(如您所知)var nf = moment(startDate).day("Friday");

您正在设置正在更改它的startDate的日期,如果您希望能够有两个不同的值,则需要创建一个单独的对象。

如果您的diff给出了错误的答案,那是因为您在更改日期之前设置了它。它不会为您动态更新,您需要重新分配其值

答案 1 :(得分:0)

以下是我计算两天之间的周数...

//Used for counting weeks since
var baseDate = new Date("01/01/2014");

//date is in format 01/01/2014
var startTimeTokens1 = data.filterStartTime.split('/');

//Calculate the startWeek number
var sDate = new Date(startTimeTokens1[0] + "/" + startTimeTokens1[1] + "/" + startTimeTokens1[2]); //sDate looks like 01/07/2014
var stimeDiff = Math.abs(sDate.getTime() - baseDate.getTime());
var sdiffDays = Math.ceil(stimeDiff / (1000 * 3600 * 24));

startWeek = (Math.ceil( sdiffDays/7 ) + 1);