我在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()
?
如何解决?
答案 0 :(得分:1)
我不明白这个错误,因为很清楚Sun Jan 26 2014 2014 10:23:10 GMT-0200(BRST)是一个约会对象。
显然,不是 Date
个对象。也许它是一个字符串,或者某些Google Apps脚本对象,其输出有点像日期,但没有getTime
功能。也许它是一个包含日期的Range
对象。
如果是Date
对象,则会使用getTime
方法。
如何解决?
不知道如何获得d1
和d2
,这是不可能的。例如,如果它是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()...
一样