【发布时间】:2017-08-04 02:13:38
【问题描述】:
我有一个包含手动设置日期的单元格。如果此日期 = 今天,我想突出显示整行。我以为我的工作正常,但夏令时在我的日期比较中投入了巨大的扳手。任何人都可以帮忙吗?
现在,如果我的单元格包含“2017 年 3 月 15 日”,脚本会告诉我日期等于“2017 年 3 月 14 日”。我知道由于 DST 需要一个小时的休息时间,但在比较我的日期时我不知道如何解决这个问题。现有代码如下。
function highlightRow (selectionRow) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Test Sheet");
var dateToFlag = sheet.getRange(selectionRow,27).getValue();
var today = new Date();
today.setHours(0,0,0,0);
if (dateToFlag !== "" && dateToFlag == today) {
sheet.getRange(selectionRow,1,1,50).setBackgroundColor('yellow');
}
}
【问题讨论】:
-
我们不知道
sheet.getRange(selectionRow,27)的值是。添加Logger.log('dateToFlag: ' + dateToFlag)声明;运行代码并查看日志。然后告诉我们价值是什么。脚本编辑器有自己的时区。我并不是说这是解决方案,但您可以在代码编辑器中更改时区。另外,这条线today.setHours(0,0,0,0);是做什么的?那是为了什么? -
sheet.getRange(selectionRow,27).getValue() 是 3/15/2017 - 手动输入我的电子表格的日期。但是,当我记录它时,它显示为 2017 年 3 月 14 日 23:00:00。我的 setHours 旨在将时间设置为 00:00:00,所以我只需要担心日期匹配,而不是时间。
-
更新:@Sandy 我正在通过 Broswer.msgbox 输出日期,它们看起来是相同的,但没有触发我的 if 语句来突出显示行。下面是日期在 msgbox 中的显示方式。日期 = 2017 年 3 月 14 日星期二 00:00:00 GMT-0500 (CDT) 今天 = 2017 年 3 月 14 日星期二 00:00:00 GMT-0500 (CDT)
-
msgbox 显示的值可能相同,但变量的数据类型可能不同。您应该检查两个变量的数据类型以确定它们是否相同。
typeof DateLink to Data types Info
标签: date google-apps-script dst