google-apps-script - 如何获得迟到的分钟数
问题描述
我有一个 A 列 - 由表格填充(时间戳) - 用户通过表格打卡
D 列有一个目标日期 E 列有一个目标小时(他必须达到的时间)
我想显示他迟到的分钟(如果他迟到 - 与目标日期和小时相比)
在 F 列中,我输入了公式=late(A7,D7,E7)
但是,它不能正常工作
function late(rep,asdt,asti) {
var asnd=new Date(asdt.getFullYear(),asdt.getMonth(),asdt.getDate(),asti);
//var nextday = new Date(today.getTime()+(10*3600*1000)); //10 hours from now
//var asnd=new Date(asdt.getTime() + (asti*60*60*1000));
if (rep.getTime() > asnd.getTime()){
return ((rep.getTime()-asnd.getTime())/(60*60*1000));
} else { return 0 }
}
它显示错误的分钟数
即使他没有迟到,它也会显示迟到的分钟数。
解决方案
解释:
你很亲近!
- 问题在于从毫秒到分钟的转换。
如果您想在几分钟内获得差异,您需要使用60*1000
:
您的代码以小时为单位。我不确定为什么结果在小时内甚至没有差异,但我的猜测是你还没有刷新自定义公式.
更新:
在与 OP 讨论后,第二个问题是电子表格和脚本之间的时区不同。OP 更改了脚本的时区以匹配电子表格的时区,并且此答案中建议的代码有效。
解决方案:
这:
function late(rep,asdt,asti) {
var asnd=new Date(asdt.getFullYear(),asdt.getMonth(),asdt.getDate(),asti);
if (rep.getTime() > asnd.getTime()){
return ((rep.getTime()-asnd.getTime())/(60*1000));
} else { return 0 }
}
根据我的数据,以分钟为单位给出正确的差异:
请注意:
自定义函数/公式的刷新方式与内置 google 表格公式不同。您需要更改自定义函数中至少一个参数的值才能对其进行更新。在这里您可以找到有关自定义函数的更多详细信息。
推荐阅读
- javascript - 查找有关如何更改变量测试 js 的解决方案
- html - 在输入一个值后,输出一个带有 RADICAL(值)的字符串
- c# - C# 控制台应用程序制作完全自定义的命令
- android - Webview 不加载 AdSense 广告
- javascript - WebGL:如何将移动的纹理覆盖在另一个纹理之上?
- assembly - 数据寄存器 EAX、EBX、ECX 和 EDX 是否可互换
- linux - Ubuntu Mint 19 32 位 - PyCharm / SDK 安装
- spring - 从 Angular 到 Spring 后端的 HTTP Get 请求被 CORS 策略阻止
- calculator - TI-82的存储和调用功能导致复数结果不同
- python - 通过转换步骤将文件数据从 S3 导入 RDS