JavaScript 相对时间,例如 24 小时前,等同于时间

42
我试图使用Highcharts显示过去24小时的一些数据。如果您在x轴上使用时间,例如在此示例中:Highcharts时间示例,则图表需要开始时间。例如,如果现在是18日晚上22:34,我想让它从17日晚上22:34开始。我不太擅长处理时间和日期相关的代码,JavaScript也不是我的强项。 我相信我需要完成的输出应该是这样的: pointStart: Date.UTC(2012, 5, 17, 22, 34) 对于上面的示例,但我不确定如何从Date()获得它。 编辑:我不确定为什么它被标记为重复,但我正在尝试获取相对于当前时间(现在-24h)的时间,而不是相对字符串表示形式(“二十四小时前”)。另一个问题也根本没有提到Highcharts。
4个回答

77
这实际上相当简单:
var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000));

只需使用当前时间戳减去24小时的值构造一个新的Date对象。

(24小时乘以每小时60分钟乘以每分钟60秒乘以每秒1000毫秒)


你可以通过将new Date().getTime()替换为Date.now()来简化这个操作。这样,代码就变成了:var yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000); - undefined

32

你应该使用时间戳来计算。

这是获取当前时间戳的方法:Math.round(new Date().getTime() / 1000) 请注意这是计算机本地时间。

现在你可以这样获取24小时前的时间戳:

var ts = Math.round(new Date().getTime() / 1000);
var tsYesterday = ts - (24 * 3600);
请查看这个 fiddle:http://jsfiddle.net/Mjm7V/ 编辑:正如 Nick 正确指出的那样,Date#getTime 返回的是 UTC 时间戳 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)。

谢谢,我不知道我可以使用时间戳。 - Totoro
1
请注意,这是计算机本地时间。答案中的免责声明不正确。Date#getTime是UTC时间戳。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime - Nick B

7
24小时前: < p > new Date(Date.now() - 86400 * 1000).toISOString()
  1. 现在时间: new Date().toISOString()
  2. 输出结果:'2017-02-04T09:15:25.233Z'
  3. Date.now() 返回自纪元以来的秒数。
  4. 从一天中减去 86400 秒,再乘以 1000 转换为毫秒
  5. 输出结果:'2017-02-03T09:14:11.789Z'

2

只需从日期中减去24小时的毫秒数:

new Date (Date.UTC(2012, 5, 17, 22, 34) - 24 * 3600 * 1000)

为什么会有踩票,这个解决方案有什么问题吗? - priestc
2
这个解决方案并不是从相对/当前时间显示24小时,而是从一个特定的硬编码时间开始计算。问题是如何获取现在24小时前的时间。 - Nick B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接