3 回答
TA贡献1772条经验 获得超6个赞
我会遵循 JG 的建议并指定一个日期,但你没有得到预期结果的原因是你的 if 条件不正确。
officehour >= 08 || officemin >=30如果 officehour 为 8 或以上,或者 officemin 为 30 或以上,则为 true。
这是一个真值表
| Officehour | Officemin |officehour >= 08 | officemin >=30 | result |
|:----------:|:-----------:|:---------------:|:--------------:|:--------|
| 7 | 45 | false | true | true |
| 8 | 15 | true | false | true |
| 7 | 15 | false | false | false |
您可能想要更多类似的东西
(officeHour > 8 || (officeHour == 8 && officemin > 30))
TA贡献1804条经验 获得超7个赞
问题是在这种情况下:
if (officehour >= 08 || officemin >=30){
即使条件的第一部分为假,第二部分仍然可以为真,这使得整个表达式为真。具体来说,如果时间的分钟部分为 30 或更多,则无论小时部分是多少,条件都为真。同样,如果小时部分为 8 或更大,则无论分钟部分是什么,条件都为真。
你需要立即查看整个时间指示,看看它是否在8点30分之前。一种方法是将时间分量转换为 4 位数字 (hhmm) 并进行比较:
if (officehour * 100 + +officemin >= 830) {
请注意,+
前面officemin
是一元加号,officemin
如果它是字符串,则它会转换为数字。如果officehour
是一个字符串,它已经通过乘法转换为数字。
TA贡献1942条经验 获得超3个赞
首先尝试将您的办公室开始时间定为日期。
var OfficeStart = new Date(mainSheet.getRange(j,2).getValue());
如果这不起作用,请将此行添加到最后以进行故障排除
console.log("%s : %s",officehour, officemin);
添加回答
举报