我有两个<input type="time">
。默认情况下,每个输入都将时间值收集为字符串。例如,"08:30"
。
如何将此字符串转换为可以启用计算的对象?是否有可能避免在这种方法中使用date
?
最后,我想计算两个time
字符串之间的差异,然后在分钟中返回结果。例如,08:00
和09:00
的预期回报值为60
分钟。
答案 0 :(得分:2)
就像你只有笔和纸一样:
您可以使用正则表达式从字符串解析:
var parts = "08:45".match(/^(\d+):(\d+)$/);
console.log(+parts[1], +parts[2], +parts[1] * 60 + +parts[2]);
...并且格式化回字符串也不是很困难。
答案 1 :(得分:0)
假设您想使用24小时时钟:
function minutesBetween (a, b) {
return Math.abs(toMinutes(b) - toMinutes(a))
}
function toMinutes (time) {
time = /^(\d{1,2}):(\d{2})$/.exec(time)
return time[1]*60 + +time[2]
}
console.log(minutesBetween('8:30', '9:30')) //=> 60
答案 2 :(得分:0)
一般来说,我建议使用使用自定义函数的Date,但只是针对您的情况,这是示例函数:
const timeStart = "8:00:00";
const timeEnd = "8:10:00";
//Handles only time with format in hh:mm or hh:mm:ss
//For more complicated cases use Date
function diff(start, end) {
const startMinutes = getMinutes(start);
const endMinutes = getMinutes(end);
return endMinutes - startMinutes
}
function getMinutes(strTime) {
const time = strTime.split(':');
return (time[0] * 60 + time[1]*1);
}
alert(diff(timeStart, timeEnd));
&#13;
请注意,此函数不负责仅验证计算的时差。您应验证输入