如何解决这个“TypeError:无法在对象中找到函数getTime”?

时间:2014-01-26 12:29:48

标签: javascript google-apps-script

我在Google Apps脚本中使用此功能:

function dateDiffYears() {
  var datas = [ [Date(2005, 7, 20), Date(2004, 2, 17)],
              [Date(2008, 9, 1),Date(2007, 5, 25)], 
              [Date(2010, 11, 2),Date(2010, 7, 28)], 
              [Date(2014, 0, 24),Date(2013, 1, 27)] ];

  for (var i= 0; i < datas.length; i++){
    var d1 = datas[i][0];
    var d2 = datas[i][1];
  Logger.log("d2  = " + d2 );
  Logger.log("d2 instanceof Date = " + (d2 instanceof Date) );
  Logger.log("d1  = " + d1 );
  Logger.log("d1 instanceof Date = " + (d1 instanceof Date) );
    var t2 = d2.getTime();
    var t1 = d1.getTime();
    Logger.log("d1 = " + t1);
    Logger.log("d2 = " + t2);
    var result =  parseInt( (t2-t1)/(24*3600*1000) );
    Logger.log("diff = " + result);
       }
}

我记得,这个功能过去很有用。但现在,当我运行它时,我收到此错误消息:TypeError: Cannot find function getTime in object Sun Jan 26 2014 10:23:10 GMT-0200 (BRST). (line 22,(第22行是var t2 = d2.getTime();)。我不明白这个错误。 Date(yyyy,mm,dd)甲酸盐有什么问题?为什么错误消息今天在讨论日期(例如:Sun Jan 26 2014 10:23:10 GMT-0200 (BRST)),因为我没有使用New Date()

enter image description here

如何解决?

2 个答案:

答案 0 :(得分:1)

  

我不明白这个错误,因为很清楚Sun Jan 26 2014 2014 10:23:10 GMT-0200(BRST)是一个约会对象。

显然,不是 Date个对象。也许它是一个字符串,或者某些Google Apps脚本对象,其输出有点像日期,但没有getTime功能。也许它是一个包含日期的Range对象。

如果是Date对象,则会使用getTime方法。

  

如何解决?

不知道如何获得d1d2,这是不可能的。例如,如果它是Range对象,也许您可​​以通过getValue获取日期。

第一步是弄清楚对象究竟是什么。也许在dataDiff的第一行设置一个断点并检查参数。

答案 1 :(得分:1)

在您的代码中:

function dateDiffYears() {
  var datas = [ [Date(2005, 7, 20), Date(2004, 2, 17)],
              [Date(2008, 9, 1),Date(2007, 5, 25)], 
              [Date(2010, 11, 2),Date(2010, 7, 28)], 
              [Date(2014, 0, 24),Date(2013, 1, 27)] ];

创建表示当前日期和时间的字符串数组,它不会创建Date对象。此外,所有参数都被忽略。 Date(andything in here)相当于:

(new Date()).toString();

per ECMA-262

  

所有参数都是可选的;提供的任何参数都被接受但完全被忽略。创建一个String并返回,就像表达式(new Date())。toString()...

一样