Javascript 以分钟为单位计算持续时间
我真的很难用分钟来计算时间。我有两个jquery时间选择器下拉列表。一个由开始时间表示,另一个由结束时间表示,我已经生成了一个自定义函数,该函数以分钟为单位计算从开始到结束的持续时间,并显示在第三个文本框中。有人能告诉我这个函数哪里错了,因为我的函数工作得不完美 我的下拉列表有以下值::Javascript 以分钟为单位计算持续时间,javascript,jquery,asp.net,asp.net-mvc-3,jquery-ui,Javascript,Jquery,Asp.net,Asp.net Mvc 3,Jquery Ui,我真的很难用分钟来计算时间。我有两个jquery时间选择器下拉列表。一个由开始时间表示,另一个由结束时间表示,我已经生成了一个自定义函数,该函数以分钟为单位计算从开始到结束的持续时间,并显示在第三个文本框中。有人能告诉我这个函数哪里错了,因为我的函数工作得不完美 我的下拉列表有以下值:: <ul class="ui-timepicker-list"><li>6:00am</li><li>6:15am</li><li>6:30
<ul class="ui-timepicker-list"><li>6:00am</li><li>6:15am</li><li>6:30am</li><li>6:45am</li><li>7:00am</li><li>7:15am</li><li>7:30am</li><li>7:45am</li><li class="">8:00am</li><li>8:15am</li><li>8:30am</li><li>8:45am</li><li>9:00am</li><li>9:15am</li><li>9:30am</li><li>9:45am</li><li class="ui-timepicker-selected">10:00am</li><li>10:15am</li><li>10:30am</li><li>10:45am</li><li>11:00am</li><li>11:15am</li><li>11:30am</li><li>11:45am</li><li>12:00pm</li><li>12:15pm</li><li>12:30pm</li><li>12:45pm</li><li>1:00pm</li><li>1:15pm</li><li>1:30pm</li><li>1:45pm</li><li>2:00pm</li><li>2:15pm</li><li>2:30pm</li><li>2:45pm</li><li>3:00pm</li><li>3:15pm</li><li>3:30pm</li><li>3:45pm</li><li>4:00pm</li><li>4:15pm</li><li>4:30pm</li><li>4:45pm</li><li>5:00pm</li><li>5:15pm</li><li>5:30pm</li><li>5:45pm</li><li>6:00pm</li><li>6:15pm</li><li>6:30pm</li><li>6:45pm</li><li>7:00pm</li><li>7:15pm</li><li>7:30pm</li><li>7:45pm</li><li>8:00pm</li><li>8:15pm</li><li>8:30pm</li><li>8:45pm</li><li>9:00pm</li><li>9:15pm</li><li>9:30pm</li><li>9:45pm</li><li>10:00pm</li><li>10:15pm</li><li>10:30pm</li><li>10:45pm</li><li>11:00pm</li></ul>
“li>6:15上午,”li>
这是我的函数:::
以下是两个控件:
<div class="span2" style="width: 75px; float: left; margin-right: 5px;">
<div class="input-control text">
Start Time
@Html.TextBoxFor(m => m.StartTime1)
</div>
</div>
<div class="span2" style="width: 75px; float: left; margin-right: 5px;">
<div class="input-control text">
End Time
@Html.TextBoxFor(m => m.EndTime1)
</div>
</div>
Here they becomes Time picker
$('#EndTime1').timepicker({
step: 15,
minTime: '6:00am',
maxTime: '11:00pm',
});
$('#StartTime1').timepicker({
step: 15,
minTime: '6:00am',
maxTime: '11:00pm',
});
below are the on change event of the time pickers
$('#StartTime1').on('changeTime', function () {
var Start_Time = $(this).val();
var End_Time = $('#EndTime1').val();
Total_Time_Taken = CalcTime(Start_Time, End_Time);
$("#TotalTime1").val(Total_Time_Taken);
});
$('#EndTime1').on('changeTime', function () {
var End_Time = $(this).val();
var Start_Time = $('#StartTime1').val();
Total_Time_Taken = CalcTime(Start_Time, End_Time);
$("#TotalTime1").val(Total_Time_Taken);
});
function CalcTime(Start_Time, End_Time) {
restHalf = 0;
total = 0;
restHalfForEnd = 0;
alert(Start_Time);
alert(End_Time);
var arrStart_time = Start_Time.split(':');
var arrEnd_time = End_Time.split(':');
if (arrStart_time[1].contains('a')) {
var RightPortion = arrStart_time[1].split('a');
restHalf = RightPortion[0];
}
else {
var RightPortion = arrStart_time[1].split('p');
restHalf = RightPortion[0];
}
if (restHalf == "30") {
arrStart_time[0] = parseFloat(arrStart_time[0]) + parseFloat(0.5);
}
else if (restHalf == "15") {
arrStart_time[0] = parseFloat(arrStart_time[0]) + parseFloat(0.25);
}
else if (restHalf == "45") {
arrStart_time[0] = parseFloat(arrStart_time[0]) + parseFloat(0.75);
}
start = arrStart_time[0];
if (arrEnd_time[1].contains('a')) {
var RightPortionForEnd = arrEnd_time[1].split('a');
restHalfForEnd = RightPortionForEnd[0];
}
else {
var RightPortionForEnd = arrEnd_time[1].split('p');
restHalfForEnd = RightPortionForEnd[0];
}
if (restHalfForEnd == "30") {
arrEnd_time[0] = parseFloat(arrEnd_time[0]) + parseFloat(0.5);
}
else if (restHalfForEnd == "15") {
arrEnd_time[0] = parseFloat(arrEnd_time[0]) + parseFloat(0.25);
}
else if (restHalf == "45") {
arrStart_time[0] = parseFloat(arrStart_time[0]) + parseFloat(0.75);
}
end = arrEnd_time[0];
alert(start); alert(end);
if (parseFloat(start) > parseFloat(end)) {
// alert("start is greater");
total = parseFloat(start) - parseFloat(end);
}
else {
//alert("end is greater");
total = parseFloat(end) - parseFloat(start);
}
var TimeinMinutes = Math.abs(total * 60);
return TimeinMinutes + "" + "Mins";
}
开始时间
@Html.TextBoxFor(m=>m.StartTime1)
结束时间
@Html.TextBoxFor(m=>m.EndTime1)
在这里,他们成为时间选择器
$('#EndTime1')。时间选择器({
步骤:15,
minTime:'6:00am',
maxTime:'11:00pm',
});
$('#StartTime1')。时间选择器({
步骤:15,
minTime:'6:00am',
maxTime:'11:00pm',
});
下面是时间选择器的on change事件
$('#StartTime1')。on('changeTime',function(){
var Start_Time=$(this.val();
var End_Time=$('#EndTime1').val();
总时间=计算时间(开始时间、结束时间);
$(“#TotalTime1”).val(所用的总时间);
});
$('#EndTime1')。on('changeTime',function(){
var End_Time=$(this.val();
var Start_Time=$('#StartTime1').val();
总时间=计算时间(开始时间、结束时间);
$(“#TotalTime1”).val(所用的总时间);
});
函数计算时间(开始时间、结束时间){
restHalf=0;
总数=0;
restlifforend=0;
警报(启动时间);
警报(结束时间);
var arrStart_time=Start_time.split(“:”);
var arrEnd_time=End_time.split(“:”);
如果(ARRU开始时间[1]。包含('a')){
var rightpoint=arrStart_time[1]。拆分('a');
restHalf=右部分[0];
}
否则{
var rightpoint=arrStart_time[1]。拆分('p');
restHalf=右部分[0];
}
如果(restHalf==“30”){
arrStart_time[0]=parseFloat(arrStart_time[0])+parseFloat(0.5);
}
否则如果(restHalf==“15”){
arrStart_time[0]=parseFloat(arrStart_time[0])+parseFloat(0.25);
}
否则如果(restHalf==“45”){
arrStart_time[0]=parseFloat(arrStart_time[0])+parseFloat(0.75);
}
开始=开始时间[0];
if(arrEnd_time[1]。包含('a')){
var righportionforend=arrEnd_time[1]。拆分('a');
restHalfForEnd=RightPortionForEnd[0];
}
否则{
var righportionforend=arrEnd_time[1]。拆分('p');
restHalfForEnd=RightPortionForEnd[0];
}
如果(restHalfForEnd==“30”){
arrEnd_time[0]=parseFloat(arrEnd_time[0])+parseFloat(0.5);
}
否则如果(restHalfForEnd==“15”){
arrEnd_time[0]=parseFloat(arrEnd_time[0])+parseFloat(0.25);
}
否则如果(restHalf==“45”){
arrStart_time[0]=parseFloat(arrStart_time[0])+parseFloat(0.75);
}
结束=结束时间[0];
警报(开始);警报(结束);
if(parseFloat(开始)>parseFloat(结束)){
//警报(“启动更大”);
总计=parseFloat(开始)-parseFloat(结束);
}
否则{
//警惕(“结束更大”);
总计=parseFloat(结束)-parseFloat(开始);
}
var TimeinMinutes=数学绝对值(总计*60);
返回时间单位为分钟+“+”分钟;
}
如果您只是尝试将hh:mma转换为分钟,然后从另一个时间中减去一个时间,类似以下内容可能会有所帮助:
// Format is hh:mma
function timeToMins(s) {
var s = s.split(':');
return (s[0]*60) + (/p/i.test(s[1]) && s[0] < 12? 720 : 0) + parseInt(s[1],10);
}
function calcTime(s, e) {
return Math.abs(timeToMins(e) - timeToMins(s));
}
//格式为hh:mma
函数timeToMins(s){
var s=s.split(“:”);
返回(s[0]*60)+(/p/i.test(s[1])&s[0]<12?720:0)+parseInt(s[1],10);
}
函数计算时间(s,e){
返回Math.abs(timeToMins(e)-timeToMins(s));
}
以上假设两个时间在同一天,因此,如果开始时间是晚上10:00,结束时间是上午10:00,您将得到相同的答案,就像开始时间是上午10:00,结束时间是下午10:00一样。如果您的值跨越午夜或24小时以上,则应包含日期并使用日期对象,以便在当天
// Format is hh:mma
function timeToMins(s) {
var s = s.split(':');
return (s[0]*60) + (/p/i.test(s[1]) && s[0] < 12? 720 : 0) + parseInt(s[1],10);
}
function calcTime(s, e) {
return Math.abs(timeToMins(e) - timeToMins(s));
}