两个项目(日期)在记录器中相同但不满足“if”条件。 Javascript / Google脚本

时间:2016-12-12 17:18:47

标签: javascript date

我在遇到if条件时遇到了麻烦,而且我的想法已经用完了。我一直在使用记录器来检查两个变量是否相同,并且它们在记录器中看起来相同,并且代码运行正常。这是我的代码:

//Get two ranges from Google sheets and turn into values, (inputValues and datesValues)
...
for (var i = 0; i < inputValues.length; i++) {
  if ((inputValues[i][2].length > 0) && (inputValues[i][29].length > 0)) {
    //This creates an event in Google Calendar. Works fine.
    var eventNum = i;
    Logger.log(datesValues[3][4]); // this is to test - results below
    Logger.log(inputValues[eventNum][30]);
      for (var k = 0; k < datesValues.length; k++) {
        if (datesValues[k][4] == inputValues[eventNum][30]){
          Logger.log("yes");
          //Things in this loop that I want to do but can't.
            }
          }
       }
     }

以下是Logger返回的内容:

[16-12-12 09:11:50:951太平洋标准时间]周四12月15日20:00:00 GMT + 01:00 2016

[16-12-12 09:11:50:952 PST] 12月15日星期四20:00:00 GMT + 01:00 2016

我基本上无法使第二个“if”子句绊倒,即使有i这样的datesValues[3][4] == inputValues[eventNum][30]datesValues.length = 50。那些日志看起来和我一模一样! if循环之前的for循环也正常工作,field.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // what happens after Enter is pressed } });

javascript中是否有关于日期和逻辑运算符的奇怪内容我不知道?

谢谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试过比较字符串而不是这些变量所代表的任何对象:

if (datesValues[k][4].toString() == inputValues[eventNum][30].toString()){
...
}

比较日期对象时,即使它们代表相同的日期,它们也不是同一个对象。例如,这将返回false:

console.log(new Date(2017, 1, 1) == new Date(2017, 1, 1)); // returns false

比较日期时,您可以比较上面的字符串表示或getTime()返回的值,这将是我的首选方法。

console.log(new Date(2017, 1, 1).getTime() == new Date(2017, 1, 1).getTime()); //returns true