javascript - 如何在两次都是变量时创建倒计时
问题描述
当倒计时运行时,它减去两次以获得差异,但问题是,实际时间正在增加,因此差异变得更大并且计时器是反向的。
我正在创建一个学校时间表,计时器需要显示你在哪个班级(达到)以及下一节课(卡住)还有多长时间,然后下一节课是(达到)。我尝试了几个快速修复,我不是编程太先进了。
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
解决方案
推荐阅读
- sql - 列第 2 行的值复制到下一列的第 1 行
- javascript - 在 JavaScript 中将对象属性转换为多个对象数组
- locust - 如何使用 Locust 实施尖峰测试?
- excel - 所有减法的总和,同时排除带有文本的单元格
- prolog - SICStus Prolog 垃圾收集跟踪消息
- spring-boot - keycloak 是否支持 mongodb 作为数据库?
- wpf - 如何更改 radtabcontrol 的非 radtabitems 背景颜色?
- javascript - JavaScript 中的 If Else 语句在 Internet Explorer 中无法正常运行
- angular - ag 网格无法正确显示角度
- anaconda - Anaconda Jypiter 无法启动,Spyder 报告错误