我想知道从给定日期开始的下一个日期。我正在使用时刻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");
}
我的期望是找到给定时间范围之间的工作日。
答案 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);