Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以分钟为单位计算持续时间_Javascript_Jquery_Asp.net_Asp.net Mvc 3_Jquery Ui - Fatal编程技术网

Javascript 以分钟为单位计算持续时间

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

我真的很难用分钟来计算时间。我有两个jquery时间选择器下拉列表。一个由开始时间表示,另一个由结束时间表示,我已经生成了一个自定义函数,该函数以分钟为单位计算从开始到结束的持续时间,并显示在第三个文本框中。有人能告诉我这个函数哪里错了,因为我的函数工作得不完美

我的下拉列表有以下值::

<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>
  • 6:30上午
  • <<
  • 6:30上午<
  • <6:30
  • “li>10:45上午<10:上午
  • 10:45上午
  • 上午10:00上午10:00<上午10:上午10:10:上午
  • 上午10:10:10:45上午10:10:10:10:上午<
  • 4:下午4:30
  • 4:下午4:下午4:308:00pm
  • 8:15pm
  • 8:30pm
  • 8:45pm
  • 9:15pm
  • >
  • 9:30pm
  • 9:45pm
  • 10:00pm
  • 10:15pm
  • 10:30pm
  • 10:45pm
  • 11:00pm 我将其传递给函数,就像从第一个下拉列表中选择“7:15pm”,从第二个下拉列表中选择“7:15am”,那么函数CalcTime()将获得“7:15pm”,7:15am“在我传递的参数中。输出应基于AM和Pm,但我的函数只需减去7.25-7.25,结果为0分钟,其中正确的输出为720分钟。Calcfunctions转换为7.15到7.25、7:00到7、7:30到7.5以及7:45到7.75

    我使用的插件是:

    
    
    这是我的函数::: 以下是两个控件:

         <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));
    }