JavaScript/jQuery:减去小时和分钟 我所拥有的:
三个时间输入,包括开始时间、结束时间和两者之间的差值JavaScript/jQuery:减去小时和分钟 我所拥有的:,javascript,jquery,date,Javascript,Jquery,Date,三个时间输入,包括开始时间、结束时间和两者之间的差值 <input type="time" name="starttime" id="starttime"> <input type="time" name="endtime" id="endtime"> <input type="time" name="duration" id="duration" disabled> 我需要的是: 当开始或结束时间改变时,差异会显示在第三个输入中 e、 g.23:15-
<input type="time" name="starttime" id="starttime">
<input type="time" name="endtime" id="endtime">
<input type="time" name="duration" id="duration" disabled>
我需要的是:
当开始或结束时间改变时,差异会显示在第三个输入中
e、 g.23:15-20:00=03:15
我所尝试的:
到目前为止,我只能生成正确的小时数,但不能生成正确的分钟数
<script>
jQuery(document).ready(function($) {
function calculateTime() {
// Get values.
var valuestart = $("#starttime").val();
var valuestop = $("#endtime").val();
// Create date format.
var timeStart = new Date("01/01/2007 " + valuestart);
var timeEnd = new Date("01/01/2007 " + valuestop);
// Subtract.
var difference = timeEnd - timeStart;
// Attempt 1: Only gets hours.
//var difference_as_hours = difference / 60 / 60 / 1000;
//alert("Hour Difference: " + difference_as_hours);
// Attempt 2: Nothing happens.
//var difference_as_hours_and_minutes = difference.getHours() + ":" + difference.getMinutes();
//alert("Hour And Minutes Difference: " + difference_as_hours_and_minutes);
// Attempt 3: Nothing happens.
//var difference_as_date = new Date("01/01/2007 " + difference);
//var difference_as_hours_and_minutes = difference_as_date.getHours() + ":" + difference_as_date.getMinutes();
//alert("Hour And Minutes Difference: " + difference_as_hours_minutes);
// Attempt 4: Nothing happens.
var formatted_time = time_format(difference);
alert(formatted_time);
}
$("#starttime, #endtime").change(calculateTime);
calculateTime();
});
function time_format(d) {
hours = format_two_digits(d.getHours());
minutes = format_two_digits(d.getMinutes());
seconds = format_two_digits(d.getSeconds());
return hours + ":" + minutes + ":" + seconds;
}
function format_two_digits(n) {
return n < 10 ? "0" + n : n;
}
</script>
jQuery(文档).ready(函数($){
函数计算时间(){
//获取值。
var valuestart=$(“#starttime”).val();
var valuestop=$(“#endtime”).val();
//创建日期格式。
var timeStart=新日期(“2007年1月1日”+valuestart);
var TIMEND=新日期(“2007年1月1日”+valuestop);
//减去。
var差异=时间结束-时间开始;
//尝试1:只得到几个小时。
//var差值=差值/60/60/1000;
//警报(“时差:+时差作为时差);
//尝试2:什么也没发生。
//var difference_as_hours_和_minutes=difference.getHours()+“:“+difference.getMinutes();
//警报(“小时和分钟差:+小时和分钟差”);
//尝试3:什么也没发生。
//var差异=新日期(“2007年1月1日”+差异);
//var difference_as_hours_和_minutes=difference_as_date.getHours()+“:“+difference_as_date.getMinutes();
//警报(“小时和分钟差异:+差异作为小时和分钟);
//尝试4:什么也没发生。
var格式的时间=时间格式(差异);
警报(U时间);
}
$(“#开始时间,#结束时间”)。更改(计算时间);
计算时间();
});
函数时间_格式(d){
小时数=两位数格式(d.getHours());
分钟=格式化两位数字(d.getMinutes());
秒=格式化两位数字(d.getSeconds());
返回时数+“:”+分钟+“:”+秒;
}
函数格式两位数字(n){
返回n<10?“0”+n:n;
}
如何生成小时数和分钟数?使用以下方法检查以下工作演示:
let valuestart=力矩持续时间(“20:00”、“HH:mm”);
让valuestop=力矩持续时间(“23:15”,“HH:mm”);
让差异=值停止。减去(值开始);
console.log(difference.hours()+“:“+difference.minutes())
我建议您使用,它将帮助您节省大量时间
function calculateTime() {
// Get values.
var valuestart = $("#starttime").val();
var valuestop = $("#endtime").val();
// Create date format.
var timeStart = new Date("01/01/2007 " + valuestart);
var timeEnd = new Date("01/01/2007 " + valuestop);
// Subtract.
var difference = timeEnd - timeStart;
var time = msToTime(difference);
console.log(time);
}
function msToTime(s) {
var ms = s % 1000;
s = (s - ms) / 1000;
var secs = s % 60;
s = (s - secs) / 60;
var mins = s % 60;
var hrs = (s - mins) / 60;
return hrs + ':' + mins + ':' + secs + '.' + ms;
}
$("#starttime, #endtime").change(calculateTime);
请在问题中提及
valuestart
和valuestop
。同时告诉我们预期的输出format@VicJordan我查阅了momentjs文档,但没有找到一个明显的减去小时和分钟的例子。请在问题中提及valuestart
和valuestop
。同时告诉我们预期的输出format@VicJordan我已经在“我需要什么”下添加了预期的输出格式。我不清楚您希望我在代码中出现的每一项之外如何提及valuestart
和valuestop
。现在检查我的答案。根据您提供的信息进行更新,当该值小于10时,是否有任何方法可以用前导零填充每个小时和分钟?例如,3:15与03:15相同。例如,1:1等于01:01。这是moment.js可以格式化的吗?我想出来了:(difference.hours()<10?:“)+difference.hours()
。一个依赖于OP中未标记或提及的库的答案并不比简单地说“使用库”好多少。非库解决方案只需几行代码,不需要4k行库。使用非标准字符串创建日期不是一个好主意,请参阅“使用库”不是答案,它可能是一个有用的注释。