10

For Example:

StartTime = '00:10';
EndTIme = '01:20';

These variables are string

Question: How can I Subtract them and returning the span time in minutes?

Hope you can help

Kick Buttowski
  • 6,709
  • 13
  • 37
  • 58
Treby
  • 1,328
  • 6
  • 18
  • 26

4 Answers4

19

Make a function to parse a string like that into minutes:

function parseTime(s) {
   var c = s.split(':');
   return parseInt(c[0]) * 60 + parseInt(c[1]);
}

Now you can parse the strings and just subtract:

var minutes = parseTime(EndTIme) - parseTime(StartTime);
Guffa
  • 687,336
  • 108
  • 737
  • 1,005
6
var startTime = "0:10";
var endTime = "1:20";

var s = startTime.split(':');
var e = endTime.split(':');

var end = new Date(0, 0, 0, parseInt(e[1], 10), parseInt(e[0], 10), 0);
var start = new Date(0, 0, 0, parseInt(s[1], 10), parseInt(s[0], 10), 0);

var elapsedMs = end-start;
var elapsedMinutes = elapsedMs / 1000 / 60;
David Hedlund
  • 128,221
  • 31
  • 203
  • 222
2

If you're going to be doing a lot of date/time manipulation, it's worth checking out date.js.

However, if you're just trying to solve this one problem, here's an algorithm off the top of my head.

(1)Parse start/end values to get hours and minutes, (2)Convert hours to minutes, (3)Subtract

function DifferenceInMinutes(start, end) {
    var totalMinutes = function(value) {
        var match = (/(\d{1,2}):(\d{1,2})/g).exec(value);
        return (Number(match[1]) * 60) + Number(match[2]);
    }    
    return totalMinutes(end) - totalMinutes(start);
}
T. Stone
  • 19,209
  • 15
  • 69
  • 97
1

dojo.date.difference is built for the task - just ask for a "minute" interval.

Get the difference in a specific unit of time (e.g., number of months, weeks, days, etc.) between two dates, rounded to the nearest integer.

Usage:

var foo: Number (integer)=dojo.date.difference(date1: Date, date2: Date?, interval: String?);
Community
  • 1
  • 1
gimel
  • 83,368
  • 10
  • 76
  • 104