【问题标题】:How to reference today's date in JavaScript?如何在 JavaScript 中引用今天的日期?
【发布时间】:2017-10-03 15:32:13
【问题描述】:

我有以下代码。它是一个 Apps 脚本,用于获取指定的两个日期之间的所有 Google 日历事件。

// from https://blog.ouseful.info/2010/03/05/grabbing-google-calendar-event-details-into-a-spreadsheet/

function caltest3(){
  //http://www.google.com/google-d-s/scripts/class_calendar.html#getEvents
  // The code below will retrieve events between 2 dates for the user's default calendar and
  // display the events the current spreadsheet
  var cal = CalendarApp.getDefaultCalendar();
  var sheet = SpreadsheetApp.getActiveSheet();


  var today = new Date();
  var dd = today.getDate();
  var mm = today.getMonth()+1; //January is 0!
  var yyyy = today.getFullYear();

  var events = cal.getEvents(new Date("October 3, 2017 00:00:00"), new Date("October 3, 2017 23:00:00"));
  for (var i=0;i<events.length;i++) {
    //http://www.google.com/google-d-s/scripts/class_calendarevent.html
    var details=[[events[i].getStartTime(),  events[i].getEndTime(), events[i].getTitle(), events[i].getDescription()]];
    var row=i+1;
    var range=sheet.getRange(row,1,1,4);
    range.setValues(details);
  }
}

目前,这两个日期是硬编码的,位于声明 events 的行上。我将日期范围设置为同一日期,重点是前 23 小时。

但是,由于脚本每天都会触发,因此我无法对这两个日期进行硬编码 - 它们都应该是动态的,反映当前日期。

那么,在保留硬编码的时间的同时,如何使用格式为“2017 年 10 月 3 日”的当前日期来代替硬编码的日期?

是的,我已经调查并阅读了有关 Date object 的信息,但我似乎无法做出正确的表达。一些额外的信息应该可以帮助我了解更多。

【问题讨论】:

    标签: javascript date google-apps-script


    【解决方案1】:

    如果您查看Date object 中的无参数构造函数

    如果没有提供参数,构造函数会创建一个 JavaScript 根据系统的当前日期和时间的日期对象 设置。

    您可以看到,创建一个新的日期对象将为今天创建一个。请注意,该文档中还概述了 getter/setter。因此您可以创建一个新的 Date 对象并将小时/分钟/秒设置为您想要的时间

    let startDate = new Date();
    startDate.setHours(0);
    startDate.setMinutes(0);
    startDate.setSeconds(0);
    
    let endDate = new Date();
    endDate.setHours(23);
    endDate.setMinutes(0);
    endDate.setSeconds(0);
    

    【讨论】:

    • 我很欣赏这个解释,但我没能翻过山坡。这样做的想法是var events = cal.getEvents(startDate, endDate); 吗?我无法让它工作。
    【解决方案2】:

    编辑:删除 +1 到月份。原来是复制粘贴原始代码留下的。

      var today = new Date();
      var dd = today.getDate();
      var mm = today.getMonth(); //January is 0!
      var yyyy = today.getFullYear();
    
      var events = cal.getEvents(new Date(yyyy, mm, dd, 0, 0, 0), new Date(yyyy, mm, dd, 23, 0, 0));
    

    【讨论】:

    • 如果你不加 + 1,你会得到错误的月份。月份为 0 索引。
    • 不,@RobertAndrews 是正确的,因为月份是零索引,既是 getMonth() 的结果,也是 Date 构造函数的预期参数。
    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 2018-01-31
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多