以下列格式给出一个时间戳 hh:mm:ss.SSS
如何用时间戳除以整数并得到一个时间戳的结果?
例如,给定一个时间戳为 00:03:00:090
如果我把它除以 3
,我希望得到的时间戳是 00:01:00:030
.
如果我有一个时间戳是 00:05:35:100
再除以 3
我希望 00:01:51:700
作为结果。如果我除以 2
我希望 00:02:47:550
因此。
$(window).on("load", function() {
$('#Btn_Calculate_Average').click(function (e) {
e.preventDefault();
Average();
});
function Average(){
let in_Time = $('#in_Time').val();
let in_valueSelected = $('#in_valueSelected').val();
var Average = in_Time / in_valueSelected;
$('#in_Result').val(Average);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="Dv">
<label for="in_Time">Time</label>
<input type="text" id="in_Time" value="00:05:35:100" >
</div>
<label for="in_valueSelected">Divide By:</label>
<input name="in_valueSelected" id="in_Média" type="text" value="3" list="lsit_valueSelected">
<datalist id="lsit_valueSelected">
<option value="1">
<option value="2">
<option value="3">
<option value="4">
<option value="5">
<option value="6">
<option value="7">
</datalist>
<button id="Btn_Calculate_Average">Calculate Average</button>
<div class="Dv">
<label for="in_Result">Media</label>
<input type="text" id="in_Result" value="" >
</div>
</div>
决议
$(window).on("load", function () {
const toMilliseconds = (timestamp) => {
let [hours, minutes, seconds, milliseconds] = timestamp.split(':')
hours = +hours
minutes = +minutes
seconds = +seconds
milliseconds = +milliseconds
console.log(hours, minutes, seconds, milliseconds)
return (hours * 3.6e6) + (minutes * 60000) + (seconds * 1000) + milliseconds
}
const toTimestamp = (ms) => {
const hours = Math.floor(ms / 3.6e6)
ms = ms % 3.6e6
const minutes = Math.floor(ms / 60000)
ms = ms % 60000
const seconds = Math.floor(ms / 1000)
ms = ms % 1000
return `${hours}:${minutes}:${seconds}:${ms}`
}
// var in_Time = $('#in_Time').val();
// let in_valueSelected = $('#in_valueSelected').val();
$('#Btn_Calculate_Average').click(function (e) {
var ResultadoDaMedia = toTimestamp(toMilliseconds($('#in_Time').val()) / $('#in_valueSelected').val())
$('#in_Result').val(ResultadoDaMedia)
console.log(ResultadoDaMedia)
})
// var DIVISER =
// input.addEventListener('input', e => {
// console.log(output.textContent = toTimestamp(toMilliseconds(input.value) / 2));
// })
});
body {
background-color: rgba(255, 255, 255, 1);
margin: 0px; padding: 0px;
height: 100vh; width: 100%;
display: flex; flex-direction: column;
align-items: center; justify-content: flex-start;
overflow: scroll;
}
.container {
background-color: rgb(255, 255, 255);
margin: 5px; padding: 5px;
min-height: 500px; width: 100%;
max-height: 64px;
display: flex; flex-direction: column;
align-items:center; justify-content: flex-start;
overflow: scroll;
}
.Dv {
background-color: rgb(255, 255, 255);
margin: 5px; padding:10px;
height: auto; width: 100%;
display: flex; flex-direction: column;
align-items: center; justify-content: center;
overflow: hidden;
}
label, button{
margin: 4px;
}
input {
margin: 4px;
max-width: 150px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="Dv">
<label for="in_Time">Time</label>
<input type="text" id="in_Time" value="00:05:35:100">
</div>
<label for="in_valueSelected">Divide By:</label>
<input name="in_valueSelected" id="in_valueSelected" type="text" list="lsit_valueSelected">
<datalist id="lsit_valueSelected">
<option value="1">
<option value="2">
<option value="3">
<option value="4">
<option value="5">
<option value="6">
<option value="7">
</datalist>
<button id="Btn_Calculate_Average">Calculate Average</button>
<div class="Dv">
<label for="in_Result">Media</label>
<input type="text" id="in_Result" value="">
</div>
</div>
如果我对你的问题理解正确的话,一种方法是将时间转换为最小的单位(本例中为毫秒),然后除以任何数字,再转换回时间戳。
const toMilliseconds = (timestamp) => {
let [
hours, minutes, seconds, milliseconds
] = timestamp.split(':')
hours = +hours
minutes = +minutes
seconds = +seconds
milliseconds = +milliseconds
return (hours * 3.6e6)
+ (minutes * 60000)
+ (seconds * 1000)
+ milliseconds
}
const toTimestamp = (ms) => {
const hours = ('' + Math.floor(ms / 3.6e6)).padStart(2, '0')
ms = ms % 3.6e6
const minutes = ('' + Math.floor(ms / 60000)).padStart(2, '0')
ms = ms % 60000
const seconds = ('' + Math.floor(ms / 1000)).padStart(2, '0')
ms = ('' + Math.floor(ms % 1000)).padStart(3, '0')
return `${hours}:${minutes}:${seconds}:${ms}`
}
const average = (timestamp, diviser) => {
return toTimestamp( toMilliseconds(timestamp) / diviser )
}
const input = document.querySelector('#input')
const output = document.querySelector('#output')
const DIVISER = 3
input.addEventListener('input', e => {
output.textContent = average(input.value, DIVISER)
})
<input id="input" />
<div id="output" />