查找并匹配数组中的日期

时间:2018-01-11 12:48:03

标签: google-apps-script

我正在尝试创建一个功能,以便找到&匹配数组中的日期。 但是出于一个奇怪的原因,如果两个日期匹配,我的函数永远不会找到匹配。 所以...,如果我用另一个字符串改变我的日期(例如:“foo”与“foo”匹配),它就可以了。

这里是我的代码,然后是日志返回。你知道为什么我的脚本不能匹配两个相同的日期吗?

谢谢!

function hideBeforeToday(values, value)
{
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = SpreadsheetApp.setActiveSheet(ss.getSheetByName(roadmapSS))
   var range = sheet.getRange(4, 11, 1, sheet.getLastColumn())
   var values = range.getValues();
   Logger.log(values);
   var value = moment().set({hour:0,minute:0,second:0,millisecond:0}).utc().toDate();
   Logger.log("date", value);

   for(var i = 0; i < values.length; i++) {
     if(values[i].indexOf(value) > -1) {
        Logger.log("data found");
     } 
   }  
}

[18-01-11 13:49:33:065 CET] Logger.log([arrayValues, [[[Wed Jan 10 00:00:00 GMT+01:00 2018, Thu Jan 11 00:00:00 GMT+01:00 2018]]]]) [0 secondes]
[18-01-11 13:49:33:067 CET] Logger.log([dateOfDay, [Thu Jan 11 00:00:00 GMT+01:00 2018]]) [0 secondes]
[18-01-11 13:49:33:070 CET] Script exécuté [durée totale d'exécution : 0,535 secondes]

1 个答案:

答案 0 :(得分:1)

看看这个例子:

var date1 = new Date("Thu Jan 11 00:00:00 GMT+01:00 2018");
var dates = [date1];


console.log(date1); // prints 2018-01-10T23:00:00.000Z
console.log(dates.indexOf(date1)); // prints 0

虽然这个:

var date1 = new Date("Thu Jan 11 00:00:00 GMT+01:00 2018");
var dates = [new Date("Thu Jan 11 00:00:00 GMT+01:00 2018")];


console.log(date1); // prints 2018-01-10T23:00:00.000Z
console.log(dates.indexOf(date1)); // prints -1

我不知道您在电子表格中有哪些数据,如果它是字符串或Date对象,但在比较之前尝试将两者都转换为相同的类型。检查他们的类型,也许使用toISOString()函数?