6

How can I get difference in hours between two dates in angular2? I don't want to use external libs like moment.js.

Having, for example: incidentTime = '2017-03-05 11:26:16 AM' and creationTime = '2017-03-06 12:26:16 AM'

let time = +params.data.incidentTime - +params.data.creationTime;  
console.log("time: " + time);

It should return 25 hours, but It returns NaN.

seidme
  • 12,543
  • 5
  • 36
  • 40
user630209
  • 1,123
  • 4
  • 42
  • 93

3 Answers3

12

This should do the job:

const date1 = params.data.incidentTime;
const date2 = params.data.creationTime;

const diffInMs = Date.parse(date2) - Date.parse(date1);
const diffInHours = diffInMs / 1000 / 60 / 60;

console.log(diffInHours);

Use Math.floor to round the result down, or Math.ceil to round it up

seidme
  • 12,543
  • 5
  • 36
  • 40
  • Argument of type '() => number' is not assignable to parameter of type 'string'. error on this line let diffInMs = Date.parse(date2) - Date.parse(date1); – user630209 Mar 06 '17 at 10:19
2

parse the date type parameters to javascript's Date type.

let date1 = new Date(params.data.incidentTime).getTime();
let date2 = new Date(params.data.creationTime).getTime();
let time = date1 - date2;  //msec
let hoursDiff = time / (3600 * 1000);
Pengyy
  • 37,383
  • 15
  • 83
  • 73
Babar Hussain
  • 2,917
  • 1
  • 17
  • 14
-1

Try this:-

let time:any = new Date("2017-03-05 11:26:16").getHours();
let date2:any = new Date("2017-03-06 12:26:16").getHours();
console.log(time -date2, time, date2, "sdfsd");

but It returns NaN

this is because you are using + sign before date which is converting youtr date into number format so returning NAN(not a number)

Pardeep Jain
  • 84,110
  • 37
  • 165
  • 215