简体   繁体   中英

How to get the time difference in hours between two Date.now()?

I have an object which updates often with time series stamps like:

obj = [{
  "value": 48.52062,
  "timestamp": 1652848223325
},
{
  "value": 43.33057,
  "timestamp": 1652838323281
},
{
  "value": 55.95403,
  "timestamp": 1652833823275
},
{
  "value": 51.71021,
  "timestamp": 1652830223280
},
{
  "value": 58.44382,
  "timestamp": 1652829323276
}]

How can I get the number of hours between these timestamps? I am trying something like this:

 var timeStart = new Date(1652848686623).getHours(); var timeEnd = new Date(1652836523287).getHours(); var hourDiff = timeEnd - timeStart; console.log(hourDiff)
But I am getting 21 as output which is wrong, it is just 3.

This is because the .getHours() method of a Date object simply returns the hour of the day that the object represents. It does not return the total number of hours since the epoch, and therefore you cannot simply subtract the two values to obtain a meaningful result.

You can achieve what you want with a simple subtraction and division:

const timeStart = new Date(1652836523287)
const timeEnd   = new Date(1652848686623)
const hourDiff  = (timeEnd - timeStart) / 1000 / 60 / 60

NOTE that I swapped the two timestamps since clearly 165284... is after 165283... .

You can not just use getHours() on Date, and substract with them, because the "hours" is time of day, not the "absolute" time.

Instead, You can just substract the end timestamp with start timestamp in your case, then just divide it by 3600000 (or 1000 * 60 * 60 ) to convert it to hour.

 function getHourDiff(start, end) { return Math.floor((end - start) / 3600000) } const timeStart = 1652836523287; const timeEnd = 1652848686623 console.log(getHourDiff(timeStart, timeEnd));

 const timeStart = new Date(1652836523287) const timeEnd = new Date(1652848686623) const hourDiff = Math.abs(timeEnd - timeStart) / 36e5 console.log(hourDiff)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM