Calculate Time Difference with JavaScript

后端 未结 12 1084
有刺的猬
有刺的猬 2020-12-01 13:20

I have two HTML input boxes, that need to calculate the time difference in JavaScript onBlur (since I need it in real time) and insert the result to new input box.

F

相关标签:
12条回答
  • 2020-12-01 13:34
       calTimeDifference(){
        this.start = dailyattendance.InTime.split(":");
        this.end = dailyattendance.OutTime.split(":");
        var time1 = ((parseInt(this.start[0]) * 60) + parseInt(this.start[1]))
        var time2 = ((parseInt(this.end[0]) * 60) + parseInt(this.end[1]));
        var time3 = ((time2 - time1) / 60);
        var timeHr = parseInt(""+time3);
        var  timeMin = ((time2 - time1) % 60);
    }
    
    0 讨论(0)
  • 2020-12-01 13:36

    This solution works for calculating diff between to separate military times

    Example format: start = 23:00 / end = 02:30

    function diff(start, end) {
    start = start.split(":");
    end = end.split(":");
    if(Number(start[0]) > Number(end[0]) ) {
      var num = Number(start[0])
      var countTo = Number(end[0]);
      var count = 0;
      for (var i = 1; num != countTo;) {
        num = num + i
        if(num > 24) {
          num = 0
        }
        count++
      }
      var hours = count - 1;
      var startDate = new Date(0, 0, 0, start[0], start[1], 0);
      var endDate = new Date(0, 0, 0, end[0], end[1], 0);
      if(startDate.getMinutes() > endDate.getMinutes()) {
        var hours = count - 2;
        var diff = 60 - (startDate.getMinutes() - endDate.getMinutes());      
      } else {
        var diff = endDate.getMinutes() - startDate.getMinutes();      
      }
      var minutes = diff
    } else {
      var startDate = new Date(0, 0, 0, start[0], start[1], 0);
      var endDate = new Date(0, 0, 0, end[0], end[1], 0);
      var diff = endDate.getTime() - startDate.getTime();
      var hours = Math.floor(diff / 1000 / 60 / 60);
      diff -= hours * 1000 * 60 * 60;
      var minutes = Math.floor(diff / 1000 / 60);
    }
    
    var returnValue = (hours < 9 ? "0" : "") + hours + ":" + (minutes < 9 ? "0" : "") + minutes
    
    return returnValue;
    

    }

    0 讨论(0)
  • 2020-12-01 13:37

    Well this work almost great. Now use this code to calculate: 23:50 - 00:10 And see what you get.Or even 23:30 - 01:30. That's a mess. Because getting the answer the other way in php is:

    $date1 = strtotime($_POST['started']);
    $date2 = strtotime($_POST['ended']);
    $interval = $date2 - $date1;
    $playedtime = $interval / 60;
    

    But still, it works like yours. I guess have to bring in the dates aswell?

    And again: My hard research and development helped me.

    if (isset($_POST['calculate'])) {
    $d1 = $_POST['started'];
    $d2 = $_POST['ended'];
    if ($d2 < $d1) {
        $date22 = date('Y-m-');
        $date222 = date('d')-1;
        $date2 = $date22."".$date222;
    } else {
    $date2 = date('Y-m-d');
    }
    $date1 = date('Y-m-d');
    $start_time = strtotime($date2.' '.$d1);
    $end_time = strtotime($date1.' '.$d2); // or use date('Y-m-d H:i:s') for current time
    $playedtime = round(abs($start_time - $end_time) / 60,2);
    }
    

    And that's how you calculate time over to the next day. //edit. First i had date1 jnd date2 switched. I need to -1 because this calculation only comes on next day and the first date vas yesterday.

    After improving and a lot of brain power with my friend we came up to this:

    $begin=mktime(substr($_GET["start"], 0,2),substr($_GET["start"], 2,2),0,1,2,2003);
    $end=mktime(substr($_GET["end"], 0,2),substr($_GET["end"], 2,2),0,1,3,2003);
    $outcome=($end-$begin)-date("Z");
    $minutes=date("i",$outcome)+date("H",$outcome)*60; //Echo minutes only
    $hours = date("H:i", $outcome); //Echo time in hours + minutes like 01:10 or something.
    

    So you actually need only 4 lines of code to get your result. You can take only minutes or show full time (like difference is 02:32) 2 hours and 32 minutes. What's most important: Still you can calculate overnight in 24 hour clock aka: Start time 11:50PM to let's say 01:00 AM (in 24 hour clock 23:50 - 01:00) because in 12 hour mode it works anyway.

    What's most important: You don't have to format your input. You can use just plain 2300 as 23:00 input. This script will convert text field input to correct format by itself. Last script uses standard html form with method="get" but you can convert it to use POST method as well.

    0 讨论(0)
  • 2020-12-01 13:37

    TimeCount = function()
    {
        t++;
        var ms = t;
        if (ms == 99)
        {
            s++;
            t = 0;
            if ( s == 60)
            {
                m++;
                s = 0;
            }
        }
    
        Dis_ms = checkTime(ms);
        Dis_s = checkTime(s);
        Dis_m = checkTime(m);
        
        document.getElementById("time_val").innerHTML = Dis_m + ":" + Dis_s+ ":" + Dis_ms;
    }
    
    function checkTime(i) 
    {
      if (i<10) {
        i = "0" + i;
      }
      return i;
    } 

    0 讨论(0)
  • 2020-12-01 13:40

    With seconds you provided is not get result to me please find my updated function giving you the correct seconds here - By Dinesh J

    function diff(start, end) {
        start = start.split(":");
        end = end.split(":");
        var startDate = new Date(0, 0, 0, start[0], start[1],start[2], 0);
        var endDate = new Date(0, 0, 0, end[0], end[1],end[2], 0);
        var diff = endDate.getTime() - startDate.getTime();
        var hours = Math.floor(diff / 1000 / 60 / 60);
        diff -= hours * 1000 * 60 * 60;
        var minutes = Math.floor(diff / 1000 / 60);
        var seconds = Math.floor(diff / 1000)-120;
    
        // If using time pickers with 24 hours format, add the below line get exact hours
        if (hours < 0)
            hours = hours + 24;
    
        return (hours <= 9 ? "0" : "") + hours + ":" + (minutes <= 9 ? "0" : "") + minutes+ ":" + (seconds <= 9 ? "0" : "") + seconds;
    }
    
    0 讨论(0)
  • 2020-12-01 13:41

    We generally need time difference to estimate time taken by I/O operations, SP call etc, the simplest solution for NodeJs (the console is in callback- async execution) is following:

    var startTime = new Date().getTime();
    //This will give you current time in milliseconds since 1970-01-01
    
    callYourExpectedFunction(param1, param2, function(err, result){
        var endTime = new Date().getTime();
        //This will give you current time in milliseconds since 1970-01-01
    
        console.log(endTime  - startTime)
        //This will give you time taken in milliseconds by your function
    
       if(err){
       }
       else{
       }
    })
    
    0 讨论(0)
提交回复
热议问题