如何从Google脚本中的星期数获取开始日期和结束日期

时间:2019-05-02 15:21:55

标签: google-apps-script google-sheets

我试图将第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

谢谢:)

2 个答案:

答案 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));
  }
}

时区可以适当设置。这可能不是最快的,但可以完成工作。