javascript - Google表格脚本日期比较未返回预期结果
问题描述
我为 Google Script Editor 编写了这两个函数,以将其扩展到工作表中,以确定事件是否应在上次发生时给出,以及它应该发生的频率。
例如,需要一天服两次药,最后一次服药时间是 2020 年 3 月 29 日 12:00,所以如果现在时间是 2020 年 3 月 30 日 01:00,函数需要返回“Due”,因为它是到期后的一个小时,即 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() 方法从参考日期获取毫秒数,然后将它们转换为天数,但我猜这也不是您真正想要的。因此,为了获得更好的答案,请更好地解释预期用途以及您打算如何调用这些函数。
推荐阅读
- c# - 如何附加一个新的 id 来记录
- php - 检查null并执行一行或另一行
- javascript - 有没有更好的方法来编写这个抛出“Uncaught RangeError:Maximum call stack size exceeded”的递归函数?
- ios - 我的视图出现在 iPad 的后退按钮中,但在 iPhone 上显示正常
- javascript - 如何将自定义属性添加到 Shopify 的脚本标签
- javascript - 我如何从以下回复中获得标题
- r - bind_rows 数据帧在 R 中 n 次,其中 n 是动态的
- excel - 选择多个选项卡的宏不起作用
- c - 如何对从 ISR 调用的静态回调例程进行单元测试
- python - AIOHTTP with Graphql: TypeError: __init__() got an unexpected keyword argument 'resolve'。为什么会出现这个问题?