在javascript中设置开始和结束日期的问题

时间:2016-04-13 13:54:54

标签: javascript google-apps-script

function testEvent(){
   var date = new Date();
   var start = todayStart(date);
   var end = tomorrowEnd(date);
}

function todayStart(date123){
  var dateHolder = date123;
  dateHolder.setHours(15, 0, 0, 0);
  return dateHolder;
}

function tomorrowEnd(tomorrow){
  var dateHolder1 = tomorrow;
  dateHolder1.setDate(tomorrow.getDate() + 1);
  dateHolder1.setHours(14, 59, 59, 59);
  return dateHolder1;
}

我遇到上述代码的问题。结束和开始都返回14:59:59:59,除非我评论结束,然后结果开始时间为15:00:00:00。结束后开始,所以我不知道这里有什么问题。为什么最终被注释出来解决问题(在某种程度上),但它存在导致问题。对不起,如果之前已经询问过,但具体的帮助总是最容易的。此外,这是谷歌应用程序脚本。

3 个答案:

答案 0 :(得分:0)

您将同一个Date对象传递给todayStart和tomorrowEnd,并且它们都操纵该对象。因为明天是最后一件事,这就是你所看到的结果。

答案 1 :(得分:0)

对象在Javascript中通过引用传递。这里需要两个单独的对象。 试试这个:

function testEvent(){
   var startdate = new Date();
  var enddate = new Date();
   var start = todayStart(startdate);
   var end = tomorrowEnd(enddate);
}

答案 2 :(得分:0)

下面是代码的工作版本,如创建单独日期对象所需的其他答案中所述;

function testEvent(){
   var date = new Date();
   var start = todayStart(date);
   var end = tomorrowEnd(date);
  Logger.log('start = '+start+'  end = '+end);
}

function todayStart(date123){
  var dateHolder = new Date(date123);
  dateHolder.setHours(15, 0, 0, 0);
  return dateHolder;
}

function tomorrowEnd(tomorrow){
  var dateHolder1 = new Date(tomorrow);
  dateHolder1.setDate(tomorrow.getDate() + 1);
  dateHolder1.setHours(14, 59, 59, 59);
  return dateHolder1;
}

结果:

enter image description here