我试图将第num周的开始和结束日期存储到Google表格中的Google脚本的变量中,因为我想为具有周范围的备份文件生成名称。
function makeCopy() {
var WeekNum = Utilities.formatDate(new Date(), "GMT", "w");
var StartWeekDate = ......
var EndWeekDate = ......
var DateRange = StartWeekDate + ' - ' + EndWeekDate
var name = SpreadsheetApp.getActiveSpreadsheet().getName() + ' ' + Date;
}
我希望变量DateRange为29.4.2019-5.5.2019
谢谢:)
答案 0 :(得分:0)
如果这是在周末结束时从触发器运行的,那么只需要执行一些基本数学运算并从当前日期中减去7,就比用周数进行额外的数学运算更容易。
function setDates() {
var timezone = Session.getScriptTimeZone();
var tempStartDate = new Date();
tempStartDate.setDate(tempStartDate.getDate() - 7); //subtract 7 to get date from 1 week ago
var startDate = Utilities.formatDate(tempStartDate, timezone, 'dd.MM.yyyy');
Logger.log(startDate);
var tempEndDate = new Date();
var endDate = Utilities.formatDate(tempEndDate, timezone, 'dd.MM.yyyy');
Logger.log(endDate);
var dateRange = startDate + ' - ' + endDate;
Logger.log(dateRange);
}
以下是日志中这些日期的样子:
startDate = 25.04.2019
endDate = 02.05.2019
dateRange = 25.04.2019 - 02.05.2019
然后您可以在脚本的其余部分中使用这些变量。
答案 1 :(得分:0)
接受的答案没有充分回答问题。您可以使用 Utilities 中的 formatDate 减去到达前一个星期一所需的日期。现在您可以指定格式(“u”,如 SimpleDateFormat 所述)以返回星期几(1-星期一,依此类推)。一旦你知道这一点,你可以减去适当的天数。这是一个例子---
function getMonday(date){
var d = Number(Utilities.formatDate(new Date(date), "EST", "u"));
if(d == 1) return date;
else{
// subtract by d-1 days
return new Date(date.getTime()-(d-1)*(24*3600*1000));
}
}
时区可以适当设置。这可能不是最快的,但可以完成工作。