我有一个包含手动设置日期的单元格。如果这个日期=今天,我想突出显示整行。我以为我的工作很好,但是Daylight Savings Time在我的日期比较中引起了巨大的反响。有人可以帮忙吗?
现在,如果我的单元格包含“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');
}
}
答案 0 :(得分:1)
现在,这似乎可以通过稍微格式化日期来实现。我修改了一些代码以使其在我的编辑器中工作。问题是一个包含时间而另一个没有。
function highlightRow () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dateToFlagS = sheet.getRange(1,1).getValue();
var dateToFlag = Utilities.formatDate(new Date(dateToFlagS), "GMT-6", "MM/dd/yyyy");
var today = Utilities.formatDate(new Date(), "GMT-6", "MM/dd/yyyy");
if (dateToFlag !== "" && dateToFlag == today)
{
sheet.getRange(1,1,1,50).setBackgroundColor('yellow');
}
}
答案 1 :(得分:0)
Google表格中存储的任何日期实际上都存储自Epoch以来的时间(以毫秒为单位)。如果您只关心日期并且不关心时间,那么将时间设置为该日期的零小时是明智的。这将使日期比较逻辑正常工作。