【发布时间】:2018-05-27 14:21:45
【问题描述】:
如何在 JavaScript 中找到时间之间的差异?
这是我想出的伪代码
var firstTime = "20:24:00";
var secondTime = "20:00:52";
console.log(firstTime - secondTime);// 23:08 (23 minutes, 8 seconds)
【问题讨论】:
标签: javascript jquery time
如何在 JavaScript 中找到时间之间的差异?
这是我想出的伪代码
var firstTime = "20:24:00";
var secondTime = "20:00:52";
console.log(firstTime - secondTime);// 23:08 (23 minutes, 8 seconds)
【问题讨论】:
标签: javascript jquery time
您可以使用new Date().setHours() 从您拥有的时间中得出日期,然后减去它们,从差异中得出新的日期:
var firstTime = "20:24:00";
var secondTime = "20:00:52";
// transform variables into parameters
let dateA = new Date().setHours(...(firstTime.split(":")));
let dateB = new Date().setHours(...(secondTime.split(":")));
let diff = new Date(dateA-dateB);
console.log(`Differnce: ${diff.getUTCHours()}:${diff.getUTCMinutes()}:${diff.getUTCSeconds()}`);
【讨论】:
试试这个:
var myDate1 = new Date();
myDate1.setHours(20, 24, 00, 0);
var myDate2 = new Date();
myDate2.setHours(20, 00, 52, 0);
如果你直接减去它们,它会给你一个时间戳值。您可以通过以下方式转换此值:
var result = myDate1 - myDate2; // returns timestamp
var hours = new Date(result).getHours(); // returns hours
【讨论】:
前段时间我做了一个类似描述的函数:
let timeOp = function(operation, initial, value) {
// define the type of operation in bool if needed
if(typeof operation == "string") {
var operation = (operation == 'add') ? true : false;
}
// convert to minutes `value` if needded
if(!Number.isInteger(value)) {
var time = value.split(':');
value = parseInt(time[0]) * 60 + parseInt(time[1]);
}
// split the string and get the time in minutes
var time = initial.split(':');
time = parseInt(time[0]) * 60 + parseInt(time[1]);
// add or substract `value` to minute
time += (operation) ? value : -value;
// standardise minutes into hours
var hour = Math.floor(time / 60);
var minute = time % 60;
// return with '0' before if needed
return hour + ':' + ((minute>=10) ? minute : ('0' + minute))
}
let firstTime = "20:24";
let secondTime = "20:00";
console.log(timeOp('substract', firstTime, secondTime)
它并不完美,也不允许使用秒。但是你可以很容易地通过修改上面的代码来解决这个问题。
【讨论】: