我编写了以下脚本来查找两个时间值之间的时差,并在时差为10分钟时执行一个函数。在脚本中,变量h1,m1和s1是第一次的时,分和秒值,h2,s2和m2是第二次的值。
例如
h1 = 10
m1 = 55
s1 = 00
h2 = 11
m2 = 05
s2 = 00
该脚本当前检查h1是否等于h2。如果是,则找到m2和m1之间的差。如果此差为10,它将执行该功能。
//........setting the current time........//
var d1 = new Date();
var h1 = d1.getHours();
var m1 = d1.getMinutes();
var s1 = d1.getSeconds();
//if the hour, minute or second is a single digit number, add a zero before it//
if (h1 < 10) {
h1 = "0"+ h1;
}
if (m1 < 10) {
m1 = "0" + m1;
}
if (s1 < 10) {
s1 = "0" + s1;
}
var now = h1 + ":" + m1 + ":" + s1;
//........setting the target time........//
var d2 = new Date(2018, 8, 16, 11, 05, 00);
var h2 = d2.getHours();
var m2 = d2.getMinutes();
var s2 = d2.getSeconds();
//if the hour, minute or second is a single digit number, add a zero before it//
if (h2 < 10) {
h2 = "0" + h2;
}
if (m2 < 10) {
m2 = "0" + m2;
}
if (s2 < 10) {
s2 = "0" + s2;
}
var time = h2 + ":" + m2 + ":" + s2;
//........Calculating the difference........//
if (h1 == h2) {
var diff = m2 - m1;
if ((diff == 10)) {
document.getElementById("diff").innerHTML = diff;
move();
}
}
但是,我已经意识到这并不总是可行的,就像上面的示例时间一样。如果小时值不同,则脚本不会计算时差。有办法克服吗?
答案 0 :(得分:1)
您应该先计算时差,然后再进行逻辑运算。这样,无论测试结果如何,您始终可以显示差异。要做到这一点,请将其转换为一些常见的底数,例如秒或分钟,然后设置适合演示的格式,例如
function getTimeDiff(h1, m1, s1, h2, m2, s2) {
return diff = toSeconds(h2, m2, s2) - toSeconds(h1, m1, s1);
}
function toSeconds(h, m, s) {
return h*3600 + m*60 + s*1;
}
function secondsToHMS(secs) {
function z(n){return (n<10? '0':'') + n}
return z(secs/3600|0) + ':' +
z((secs%3600)/60|0) + ':' +
secs%60;
}
// Tests
[[4,23,15, 5,5,8], // 04:23:15 vs 05:05:08
[4,23,15, 4,25,8]]. // 04:23:15 vs 04:25:08
forEach(function(arr) {
var diff = getTimeDiff(...arr);
console.log(`Diff of ${secondsToHMS(diff)} is ${diff > 600? 'more':'less'} than 10 minutes`);
});
答案 1 :(得分:0)
如此处的回答Get difference between 2 dates in JavaScript?
var date1 = new Date("7/13/2010");
var date2 = new Date("12/15/2010");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
alert(diffDays);`
答案 2 :(得分:0)
要计算差异,您可以将“计算差异”注释下方的内容替换为:
>>> for l in range(2, 12):
... print(f'{l:>2d}:', ''.join(chain.from_iterable(zip_longest(*[a[i::l] for i in range(8)], fillvalue=''))))
...
2: hello wollo worlo worldworldrldd
3: hello wolo worldworldld
4: hello woo worldrld
5: hello wo worldd
6: hello woworld
7: hello woorld
8: hello world
9: hello wold
10: hello wod
11: hello wo
说明
lloopmois.map((result, index) => ...)
// ^ ^
对象的getTime()
函数返回日期时间戳记,即1970年1月1日00:00:00 UTC与您的日期之间经过的毫秒数 宾语。使用日期进行计算时,使用此方法要容易得多,而不是分别比较/计算小时,分钟和秒……这在软件开发中也是很常见的做法。Math.abs()
是为了确保此差异始终为正数。这使得以下比较容易。我们去了!现在,您具有调用函数所需的条件。
如果需要更多说明,请随时答复。
答案 3 :(得分:0)
尝试使用parseInt()
函数,因为在将h1,h2,m1和m2附加0后将其视为字符串。
if (parseInt(h1) == parseInt(h2)) {
var diff = parseInt(m2) - parseInt(m1);
if ((diff == 10)) {
document.getElementById("diff").innerHTML = diff;
move();
}
}