javascript - 比较 JavaScript 中的两个日期(字符串)不起作用

标签 javascript date google-sheets

我正在尝试使用 JavaScript 比较 Google 应用脚本中的 2 个日期。我遇到的问题是结果不正确,我遵循了 Stackoverflow 上的多个建议,但没有成功。

这是我的代码:
- 这是获取从今天开始的日期 - 30 天的代码

  var date = new Date();
  var last_30 = date.setDate(date.getDate() - 30);
  var delete_date = Utilities.formatDate(date, 'Etc/GMT', 'dd/MM/yyyy');

这是我的代码:
- 这是从日期格式的电子表格中获取值的代码

    var row = values[i];  // Values from Spreadsheet cells    
    var dt = new Date(row[0]);
    var year = dt.getFullYear();
    var month = dt.getMonth() + 1 ;
    var day = dt.getDate();      
    var cell_date_value = ('0' + dt.getDate()).slice(-2) + '/'
             + ('0' + (dt.getMonth()+1)).slice(-2) + '/'
             + dt.getFullYear();

    Logger.log('cell:'+cell_date_value + ' delete:'+delete_date);

    if (Date.parse(cell_date_value) > Date.parse(delete_date)) {  
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }

这是我的 Logger.log():

[19-05-06 15:19:40:579 CEST] cell_value:03/05/2019  delete_before:06/04/2019
[19-05-06 15:19:40:580 CEST] cell_value:03/05/2019  delete_before:06/04/2019
[19-05-06 15:19:40:581 CEST] cell_value:03/05/2019  delete_before:06/04/2019
[19-05-06 15:19:40:581 CEST] cell_value:03/04/2019  delete_before:06/04/2019
[19-05-06 15:19:40:582 CEST] cell_value:03/03/2019  delete_before:06/04/2019
[19-05-06 15:19:40:583 CEST] cell_value:03/03/2019  delete_before:06/04/2019
[19-05-06 15:19:40:584 CEST] cell_value:03/02/2019  delete_before:06/04/2019

正如您所看到的,最后 4 行中的 cell_valuedelete_before 旧,但在 if 语句下仍然没有拾取该单元格。 typeOfstring



我也尝试过这个:(不起作用):

var d1 = Date.parse(cell_value);
var d2 = Date.parse(delete_before);
if (d1 < d2) {
    alert ("Error!");
}

还有这个:

function isLater(str1, str2)
{
    return new Date(str1) > new Date(str2);
}

任何人都可以看到问题吗?

最佳答案

我认为你可以尝试比较时间戳而不是时间对象

var d1 = Date.parse(cell_value).getTime();
var d2 = Date.parse(delete_before).getTime();
if (d1 < d2) {
    alert ("Error!");
}

getTime() 返回自 1970 年以来花费的毫秒数,因此您可以轻松比较 2 个整数。

例如:

Date.parse(cell_value) != Date.parse(cell_value)

您正在比较 2 个对象实例。所以基本上你问的是这是同一个对象吗?这不是同一时间。

关于javascript - 比较 JavaScript 中的两个日期(字符串)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56006160/

相关文章:

javascript - 如何在特定时间间隔内停止 javascript 循环?

mysql - 从 mysql 中获取行元素日期介于现在和从现在起 5 天之间的行

google-apps-script - 使用 setColumnFilterCriteria 后如何从 Filter 中获取过滤后的值?

javascript - Google Apps 脚本正在将我的数组更改为字符串。为什么?

javascript - Mocha : get stacktrace when running mocha programmatically

javascript - 多个 jQuery 正则表达式测试

javascript - 如何在按钮单击时从嵌套 JSON 数组数据创建嵌套 ng-repeat

PHP日期转换dd [th/st/rd]/month/yyyy

javascript - 通过从 Javascript 中的特定日期减去 X 天数来查找日期

google-apps-script - 计算特定工作表上的评论数量