为什么删除下一行的效果呢?

时间:2016-06-13 21:42:16

标签: javascript date google-apps-script

我试图根据给定的日期返回不同的日期,例如一周的第一个星期一,一周的星期五,以及之前和之后几周的天数,以便我可以找出开始和我的工资期结束(对于我的两个工作,每个工作都不同)以及该期间的工资日期。

当我删除Logger.log("Prev Monday > " + addDays(pMonday, -7));时 下一行的值会发生变化。什么是删除行做弄乱下一个?

我在Google App Scripts中使用此功能,因此我可以轻松地将数据从Google日历中提取到Google表格中。它也意味着没有额外的库。

function test_monday(){
  var theDate = new Date();
  theDate.setDate(16);
  theDate.setMonth(5);
  theDate.setFullYear(2016);
  theDate.setHours(12,0,0,0)
  Logger.log(theDate);

  var pMonday = new Date();
  pMonday = getMonday( theDate ) ;
  Logger.log("pMonday: " + pMonday)

  Logger.log("Prev Monday > " + addDays(pMonday, -7));
  Logger.log("Following Friday > " + addDays(pMonday, 4));
}

function getMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

function addDays(d, n){
  var date = new Date();
  date = d;
  var offset = n;
  date.setHours(24 * ( offset ));
  return date;
}

1 个答案:

答案 0 :(得分:1)

date = d;

此处的这一行完全取消了您在上一行中所做的工作。它表示date与<{1}}的完全相同的实例。这意味着,无论何时修改ddate),您还要修改date.setHours(24 * offset)。你也可以写d,因为它们的意思相同。

如果要创建一个与另一个对象相等的新d.setHours(24 * offset)对象,只需将原始对象传递给Date构造函数即可。所以你可以把你的函数重写为:

Date