首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得两个Date.now()之间以小时为单位的时间差?

如何获得两个Date.now()之间以小时为单位的时间差?
EN

Stack Overflow用户
提问于 2022-05-18 05:10:58
回答 3查看 184关注 0票数 0

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

代码语言:javascript
运行
复制
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
}]

我怎样才能得到这些时间戳之间的小时数?我正在尝试这样的方法:

代码语言:javascript
运行
复制
 var timeStart = new Date(1652848686623).getHours();
 var timeEnd = new Date(1652836523287).getHours(); 
 var hourDiff = timeEnd - timeStart;
 console.log(hourDiff)

但是我得到了21作为输出,这是错误的,它只是3。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-05-18 05:16:16

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

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

代码语言:javascript
运行
复制
const timeStart = new Date(1652836523287)
const timeEnd   = new Date(1652848686623)
const hourDiff  = (timeEnd - timeStart) / 1000 / 60 / 60

注意,我交换了两个时间戳,因为显然165284...是在165283...之后。

票数 1
EN

Stack Overflow用户

发布于 2022-05-18 05:25:04

您不能只在日期上使用getHours(),并与它们进行子处理,因为“小时”是一天中的时间,而不是“绝对”时间。

相反,您只需用启动时间戳减去结束时间戳,然后除以3600000 (或1000 * 60 * 60)将其转换为小时。

代码语言:javascript
运行
复制
function getHourDiff(start, end) {
   return Math.floor((end - start) / 3600000)
}

const timeStart = 1652836523287;
const timeEnd = 1652848686623

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

票数 1
EN

Stack Overflow用户

发布于 2022-05-18 06:08:07

代码语言:javascript
运行
复制
const timeStart = new Date(1652836523287)
const timeEnd   = new Date(1652848686623)
const hourDiff  = Math.abs(timeEnd - timeStart) / 36e5
console.log(hourDiff)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72283482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档