为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript 中的 If 条件存在一些问题

JavaScript 中的 If 条件存在一些问题

子衿沉夜 2023-07-29 13:49:28
如果有人在规定时间之前和之后登记出席,我想发送一封电子邮件。办公室早上 8:30 开始上班,但我对时间和分钟有疑问。即使时间是上午 7:45,电子邮件也会延迟触发,我哪里出错了?var startTime = mainSheet.getRange(j,2).getDisplayValue();var OfficeStart = mainSheet.getRange(j,2).getValue();var officehour = OfficeStart.getHours();var officemin = OfficeStart.getMinutes();if (officehour >= 08 || officemin >=30){var startTime = startTime+ "<font color='Red'> ⬤ Late </font>";}else{var StartTime =startTime +"<font color='Green'> ⬤ OnTime </font>";}
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超5个赞

我会遵循 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))


查看完整回答
反对 回复 2023-07-29
?
三国纷争

TA贡献1804条经验 获得超7个赞

问题是在这种情况下:

if (officehour >= 08 || officemin >=30){

即使条件的第一部分为假,第二部分仍然可以为真,这使得整个表达式为真。具体来说,如果时间的分钟部分为 30 或更多,则无论小时部分是多少,条件都为真。同样,如果小时部分为 8 或更大,则无论分钟部分是什么,条件都为真。

你需要立即查看整个时间指示,看看它是否在8点30分之前。一种方法是将时间分量转换为 4 位数字 (hhmm) 并进行比较:

if (officehour * 100 + +officemin >= 830) {

请注意,+前面officemin是一元加号,officemin如果它是字符串,则它会转换为数字。如果officehour是一个字符串,它已经通过乘法转换为数字。


查看完整回答
反对 回复 2023-07-29
?
手掌心

TA贡献1942条经验 获得超3个赞

首先尝试将您的办公室开始时间定为日期。

var OfficeStart = new Date(mainSheet.getRange(j,2).getValue());

如果这不起作用,请将此行添加到最后以进行故障排除

console.log("%s : %s",officehour, officemin);



查看完整回答
反对 回复 2023-07-29
  • 3 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信