如何在两个date.now()之间获得时间差异?

发布于 2025-01-30 00:37:40 字数 691 浏览 2 评论 0原文

我有一个经常更新时间序列邮票的对象,例如:

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
}]

如何获得这些时间戳之间的小时数?我正在尝试这样的事情:

 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.

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

星軌x 2025-02-06 00:37:40

这是因为.gethours() date对象的方法只是返回对象所代表的一天的时间。它不会返回自时代以来的总小时数,因此您不能简单地减去两个值以获得有意义的结果。

您可以通过简单的减法和除法来实现想要的目标:

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

请注意,我换了两个时间戳,因为165284 ...165283 ... 。 /代码>。

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....

另类 2025-02-06 00:37:40

您不能仅在日期使用gethours(),而是与它们进行提取,因为“小时”是一天中的时间,而不是“绝对”时间。

取而代之的是,您只需在情况下使用start Timestamp提取结束时间戳,然后将其除以3600000(或1000 * 60 * 60 * 60)即可将其转换为小时。

function getHourDiff(start, end) {
   return Math.floor((end - start) / 3600000)
}

const timeStart = 1652836523287;
const timeEnd = 1652848686623

console.log(getHourDiff(timeStart, timeEnd));

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));

不离久伴 2025-02-06 00:37:40
const timeStart = new Date(1652836523287)
const timeEnd   = new Date(1652848686623)
const hourDiff  = Math.abs(timeEnd - timeStart) / 36e5
console.log(hourDiff)

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文