我想比较两个日期,如果它们相等就做一些事情。
第一个日期来自谷歌表格。单元格格式为日期,本地化为法国 (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>
答案 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')
}