我正在使用PIR传感器来检测我的环境中的运动。当有运动时,PIR传感器将值1发送到控制台。一旦检测到没有运动,每秒钟就会通过setInterval()多次到达0。现在,在那个时间点,我想要检测出0已经有多长时间了,然后在10分钟时做一些事情。我正在考虑在运动开始时做一次new Date().getMinutes();
,然后在运动停止时再做另一次运动,并比较这两种情况。我在正确的轨道上吗?
发布于 2015-08-10 02:53:29
最后,我在setInterval()之外添加了一个setInterval(),并在if (myDigitalValue === 0)
循环中保留了i++
,直到它达到了我所寻找的秒数,并且它等于我运行了一个方法。
发布于 2015-08-12 23:08:44
(new Date()).getMinutes()
将返回当前时间的“分钟”部分,即分钟指针指向时钟的位置。您可能想要的是自某一特定点以来已经过去的绝对时间。幸运的是,有一种简单的方法可以确定日期对象(或其中两个)的时间差:
begin = new Date();
. . . time passes . . .
end = new Date();
timeDiffInMilliseconds = end - begin;
换句话说,当您从另一个Date
对象中减去一个对象时,您将得到以毫秒为单位的时间差(多态运算符的万岁)。
这样做的一个好处是,如果您想改变测试的频率或时间长度,则只需更改相关的测试频率。使用您所描述的循环,两者不必要地结合在一起,这可能更容易出错。
https://stackoverflow.com/questions/31910905
复制相似问题