如果列B1 + 2days
中的日期大于today
,我想保护其他用户的文档。
我对保护部分没有任何问题,但我无法通过一些我无法理解的奇怪理由来使用IF语句。
这是我比较日期的脚本:
ss = SpreadsheetApp.getActiveSheet();
send_date = ss.getRange("B1").getValue();
limit = new Date(send_date.setDate(send_date.getDate()-2))
limit.setHours(0,0,0,0)
day0 = new Date();
day0.setHours(0,0,0,0)
ss.getRange("D1").setValue(day0);
ss.getRange("D2").setValue(limit);
ss.getRange("D3").setValue(limit>day0);
ss.getRange("D4").setValue(limit<=day0);
if (day0>limit) { ss.getRange("C1").setValue("can be edited");}
else if (day0<=limit) { ss.getRange("C1").setValue("cannot be edited");}
我将小时/分钟/秒等设置为0,因为我只需要逐日比较日期。
运行脚本后会发生什么?
例如,if B1 = '2017-10-24'
,D1设置为今天(&#39; 2017-10-26&#39;),D2设置为(&#39; 2017-10-22&#39;)。< / p>
D3,limit>day0
比较获得值FALSE
,D4 limit<=day0
获得TRUE
。
到目前为止一直很好,但是当谈到IF语句时,似乎这些比较是相反的。
在此示例中,C1设置为&#39;可以编辑&#39;。
对我来说,这意味着第一次比较返回FALSE
,第二次返回TRUE
。
当我将日期设置为将来的某个日期时(即&#39; 2017-10-30&#39;),D1-D4字段会获得正确的值,但C1设置为&#39;无法编辑&#39; 39;
我会感激任何帮助。
答案 0 :(得分:0)
您可以不比较两个对象(day0
和limit
)。
但是,您可以比较这两个对象的值。例如,使用getTime()
。
var day0Time = day0.getTime();
var limitTime = limit.getTime();
if (day0Time > limitTime) {
// do stuff
}