将两个日期转换为字符串并比较它们

时间:2021-08-01 15:30:38

标签: javascript google-apps-script google-sheets

我想比较两个日期,如果它们相等就做一些事情。

第一个日期来自谷歌表格。单元格格式为日期,本地化为法国 (GMT+1)。 第二个日期来自用户填写的 HTML 表单日期字段。

我想比较yyyy--MM--dd格式的字符串,所以我使用了Utilities.format()函数。 当我显示字符串值时,似乎一切正常。

但是当字符串比较不起作用时。应该是转换问题。我做了一些测试,没有任何效果。

这是我的代码的一部分

//...
  } else {
    SpreadsheetApp.getUi().alert(formObject.licenseExpiration); // Works. Displays yyyy-MM--dd
    SpreadsheetApp.getUi().alert(Utilities.formatDate(sheetDataRangeValues[0][7], "GMT+1", "yyyy-MM-dd")); // Works. Displays yyyy-MM--dd
    if (Utilities.formatDate(formObject.licenseExpiration, "GMT+1", "yyyy-MM-dd") == Utilities.formatDate(sheetDataRangeValues[0][7], "GMT+1", "yyyy-MM-dd") || formObject.licenseExpiration == "") {
      SpreadsheetApp.getUi().alert("It works !");
    }
//...

感谢您的帮助。

编辑:

HTML

<form id="filterForm" onSubmit="handleFormSubmitFilter(this)">
      <label for="licenseExpiration">License Expiration</label><br/>
      <input type="date" id="licenseExpiration" name="licenseExpiration"><br/><br/>
</form>

<script>
    function preventFormSubmitFilter() {

        var formsFilter = document.querySelectorAll('FormFilter');

        for (var i; i < formsFilter.length; i++) {
            formsFilter[i].addEventListener('submit', function(event) {
                event.preventDefault();
            });
        }
    }
    window.addEventListener('load', preventFormSubmitFilter);
  
    function handleFormSubmitFilter(formObject) {
        google.script.run.processFormFilter(formObject);
        document.getElementById("filterForm").reset();
    }
</script>

1 个答案:

答案 0 :(得分:0)

为了获得最佳结果,您需要在新的 Date 对象中传递“原始”日期。然后使用实用程序将其转换为字符串。提示:使用 console.log() 来(或更好地,调试器)查看您的输出。

  const licenseDate = Utilities.formatDate(new Date(formObject.licenseExpiration), Session.getScriptTimeZone(), "yyyy-MM-dd");
  const sheetDate = Utilities.formatDate(new Date(sheetDataRangeValues[0][7]), Session.getScriptTimeZone(), "yyyy-MM-DD");
  if (sheetDate == licenseDate || formObject.licenseExpiration == "") {
    console.log('it works')
  }