Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Time difference in Nodejs?

Tags:

Im trying to figure out a way to get the time difference in seconds between two dates.

For example, difference in seconds between:

2013-5-11 8:37:18  2013-5-11 10:37:18 

Tried:

function timeDifference(laterdate, earlierdate) {     var difference = laterdate.getTime() - earlierdate.getTime();     var daysDifference = Math.floor(difference/1000/60/60/24);     difference -= daysDifference*1000*60*60*24     var hoursDifference = Math.floor(difference/1000/60/60);     difference -= hoursDifference*1000*60*60     var minutesDifference = Math.floor(difference/1000/60);     difference -= minutesDifference*1000*60     var secondsDifference = Math.floor(difference/1000);      return secondsDifference; } 

But that does not work in Nodejs, error with

getTime()

function not being found

like image 875
Alosyius Avatar asked May 11 '13 08:05

Alosyius


2 Answers

var moment = require('moment') var startDate = moment('2013-5-11 8:73:18', 'YYYY-M-DD HH:mm:ss') var endDate = moment('2013-5-11 10:73:18', 'YYYY-M-DD HH:mm:ss') var secondsDiff = endDate.diff(startDate, 'seconds') console.log(secondsDiff) 

You will need the moment.js module

npm install -S moment 
like image 116
Noah Avatar answered Oct 01 '22 13:10

Noah


The timezonecomplete module has support for date differences, even with dates in different time zones. It returns a Duration object which is unit-aware, not just a "number" that represents "milliseconds":

var tc = require("timezonecomplete");     var start = new tc.DateTime("2014-06-26T12:00:00 Europe/Amsterdam"); var end = new tc.DateTime("2014-06-26T12:00:00 UTC");  var duration = end.diff(start);  // unit-aware duration  console.log(duration.minutes()); // -120 console.log(duration.hours()); // -2 
like image 22
rogierschouten Avatar answered Oct 01 '22 14:10

rogierschouten