我为 Google 脚本编辑器编写了这两个函数,以将其扩展到工作表中,以确定事件是否应在上次发生时给出,以及应该发生的频率。
例如,某种药物每天需要服用两次,最后一次服用是在 2020 年 3 月 29 日 12:00,那么如果现在时间是 2020 年 3 月 30 日 01,函数需要返回“Due” :00,因为比到期时间晚了一个小时,即 2020 年 3 月 30 日 00:00。
我在调用“IsDue”时得到的结果不是我所期望的。我将日期/时间与现在进行比较是否正确?
function ReturnFrequencyInDays( unit, quantity) {
switch(unit) {
case "Hours":
return quantity/24;
break;
case "Days":
return quantity;
break;
case "Weeks":
return quantity * 7;
break;
case "Months":
return quantity * 30;
break;
case "Years":
return quantity * 365;
break;
default:
return "Invalid unit";
}
}
function IsDue(how_often,unit,every,last_occurance){
var currentTime=new Date();
if (((ReturnFrequencyInDays(unit,every)/how_often) + last_occurance )<=currentTime) {
return "Due";
} else {
return "Not Due";
}
}
最佳答案
您需要提供更多关于您希望该函数执行的操作的说明。但我从您的术语假设您尝试将天数与此处的日期进行比较:
var currentTime = new Date();
if(((ReturnFrequencyInDays(unit,every)/how_often) + last_occurance)<= currentTime){
return "Due";
}
那是行不通的。您可以使用 valueOf() 或 getMilliseconds() 方法从引用日期获取毫秒数,然后将它们转换为天数,但我的猜测是这也不是您真正想要的。因此,为了获得更好的答案,请更好地解释预期用途以及您打算如何调用这些函数。
关于javascript - Google Sheets 脚本日期比较未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60919020/