我在这里遇到的问题是,当我减去回到月末,而不是回到上个月的29或28时,程序开始减去几个月而不是几天。贝娄是我的完整代码,下面是它在谷歌电子表格中产生的输出。
function trying(){
var date = new Date();
var datechange = new Date();
var array = new Array(7);
for (var i = 0; i < 7; i++) {
array[i] = new Array(0);
}
for ( var i = 0; i < 7; i++){
days = i + 8
datechange.setDate(date.getDate() - days);
var tabName = Utilities.formatDate(datechange, 'MST', 'yyyy-MM-dd').toString();
array[i][0] = tabName;
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Want");
sheet.getRange("B2:B8").setValues(array);
}
这是生成的日期。
05/07/2012 04/07/2012 03/07/2012 02/07/2012 01/07/2012 30/06/2012 30/05/2012
答案 0 :(得分:1)
Date.getDate()返回日期(1-31) - 所以你所做的不正确。
而是试试这个:
var ONE_DAY = 24 * 60 * 60 * 1000; //in milliseconds
for ( var i = 0; i < 7; i++){
days = i + 8
datechange.setDate(date.getTime() - (days * ONE_DAY));
var tabName = Utilities.formatDate(datechange, 'MST', 'yyyy-MM-dd').toString();
array[i][0] = tabName;
}
答案 1 :(得分:1)
你必须在你的循环中定义datechange
,而不是在外面:
var date = new Date();
for ( var i = 0; i < 30; i++){
days = i + 8
var datechange = new Date();
datechange.setDate(date.getDate() - i);
console.log(datechange);
}
答案 2 :(得分:0)
这是JavaScript日期的工作方式。有关详细信息,请参阅here。