如何计算两个日期之间的差异,以分钟为单位

时间:2016-07-17 21:10:13

标签: javascript date time

我正在使用javascript,并且我有这种格式的日期" 2016-04-15 1230" (yyyy-MM-dd HHmm)我想以分钟计算这些日期之间的差异。

示例:

" 2016-04-15 1230"之间的区别和" 2016-04-15 1210"是20分钟

4 个答案:

答案 0 :(得分:2)

moment.js对于这类事情是一个很好的库:

var firstTime = moment("2016-04-15 1230", "YYYY-MM-DD HHmm");
var secondTime = moment("2016-04-15 1210", "YYYY-MM-DD HHmm");

var difference = moment.duration(firstTime - secondTime);

console.log(difference.asMinutes()); // 20

答案 1 :(得分:0)

首先,您需要获得日期值的Date表示。

/* Helper function that parses date string (format DD-YY-MM HH:mm) 
   to create a JS Date object*/
function getDateFromDateStr(dateStr) {
  var dateParts=dateStr.split(/\D/);
  return new Date(dateParts[0],dateParts[1],dateParts[2],dateParts[3],dateParts[4]);
}

...
... 
/*Use input string to create date objects*/
var str1= "2016-04-15 1210"; 
var str2= "2016-04-15 1230";

var len = str1.length;
var date1 = getDateFromDateStr(str1.slice(0,len-2) + ":" + str1.slice(len-2));
len = str2.length;
var date2 = getDateFromDateStr(str2.slice(0,len-2) + ":" + str2.slice(len-2));

然后你可以通过简单的减法简单地得到毫秒的差异,并在几分钟内转换结果:

var differenceInMinutes = (date2 - date1)/(60*1000);

注意 - 请注意,您应该尝试对UTC中的日期进行算术运算。或者,如果您能保证他们总是在同一时区,并且没有任何夏令时。

答案 2 :(得分:0)

a =新日期('2016-07-21 12:30'); b =新日期('2016-07-21 12:20');

的console.log((A-B)/ 60000);

打印10。

另见How to add 30 minutes to a JavaScript Date object?

答案 3 :(得分:0)

感谢@RobG纠正我。这是另一回事。我用给出的时间示例尝试了它,并改变了两次的分钟和小时。我确定这不是最快的方式,但它是一个自制软件。

var first = "2016-04-15 1230"

var second ="2016-04-15 1210"


var timeDiff = function(x, y) {

// Gets first hours and cuts it out
hrs1 = first.slice(11, 13);

// Gets second hours and cuts it out
hrs2 = second.slice(11, 13);

// Gets the minutes from first time and cuts it out
min1 = first.slice(13,15);

// Gets the minutes from second time and cuts it out
min2 = second.slice(13,15);

// Subtracts and puts the difference of minutes in minDiff variable
var minDiff = min1 - min2;

// Subtracts and puts the difference of hours in hrsDiff variable  
var hrsDiff = hrs1 - hrs2;

//  If it is negative, make it positive
if(minDiff <0){
minDiff *= -1;
}

if(hrsDiff < 0) {

  hrsDiff *= -1;

}

return ["Diff in hrs: " + hrsDiff, "Difference in Minutes: " + minDiff];

}

返回:[&#34;小时差异:0&#34;,&#34;分钟差异:20&#34;]

随着时间的推移:&#34; 2016-04-15 1530&#34;,&#34; 2016-04-15 1248&#34;,

返回:[&#34;小时差异:3&#34;,&#34;分钟差异:18&#34;]

希望这有用。