首页 > 解决方案 > 如何在两次都是变量时创建倒计时

问题描述

当倒计时运行时,它减去两次以获得差异,但问题是,实际时间正在增加,因此差异变得更大并且计时器是反向的。

我正在创建一个学校时间表,计时器需要显示你在哪个班级(达到)以及下一节课(卡住)还有多长时间,然后下一节课是(达到)。我尝试了几个快速修复,我不是编程太先进了。

function subtime(ctime, atime) {
  //Current time, Array time
  let cArr = ctime.split(":")[1] + "." + ctime.split(":")[2];
  let aArr = atime.split(":")[1] + "." + atime.split(":")[2];
  let ftime = (Math.round((Math.abs(cArr - aArr)) * 100) / 100).toString();
  return ftime.split(".")[0].concat(":", ftime.split(".")[1])
}

基本上该功能是以实际时间(军事时间)为ctime,然后以课程结束时的军事时间为atime。课程结束时间已经由我的其他函数 timetell 定义。我会说这个函数

subtime(time, numbers);

函数 timetell 看起来像这样

function timetell(array, i, side) {
  this.array = array[i].split("-")[side].replace(/\s/g, '');
  let side1 = this.array.slice(0, 2) + ":";
  let side2 = this.array.slice(-2);
  let answer = side1.concat(side2);

  return answer.concat(":00");

}

我从中获取时间的数组是:

var times = ["0905 - 0955", "1000 - 1050", "1055 - 1145", "1155 - 1245", "1250 - 1340", "1345 - 1435", "1440 - 1530"];

所有 timetell 所做的只是获取一个元素并将其分隔,然后添加一个“:”来显示小时和分钟。

例如:输入:

timetell(times, 1, 1);

因此,它正在计算时间数组,它为“1000 - 1050”次计算 1。然后 1 用于选择课程的结束。(0 用于开头)

输出:

'10:50:00'

我预计输出是到下一堂课的时间,但到下一堂课的时间实际上正在增加。

编辑:现在的问题是计时器没有从 60 秒倒计时,而是从 99 计数到 40。此外,当它达到 10 的倍数(即 10、20、30)时,它会显示第一个数字,例如小时然后它说未定义。示例:您在第 2 期,在 20:undefined 您将进入第 3 期。你在第 2 期,在 20:67 你将进入第 3 期。

时间会这样过去:20:99 20:98 ... 20:41 20:undefined 19:99

标签: javascripthtml

解决方案


推荐阅读