我试图根据给定的日期返回不同的日期,例如一周的第一个星期一,一周的星期五,以及之前和之后几周的天数,以便我可以找出开始和我的工资期结束(对于我的两个工作,每个工作都不同)以及该期间的工资日期。
当我删除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;
}
答案 0 :(得分:1)
date = d;
此处的这一行完全取消了您在上一行中所做的工作。它表示date
与<{1}}的完全相同的实例。这意味着,无论何时修改d
(date
),您还要修改date.setHours(24 * offset)
。你也可以写d
,因为它们的意思相同。
如果要创建一个与另一个对象相等的新d.setHours(24 * offset)
对象,只需将原始对象传递给Date
构造函数即可。所以你可以把你的函数重写为:
Date