32

我正在尝试使用 highcharts 显示过去 24 小时内的一些数据。当您使用 x 轴的时间时,图表需要开始时间,如本示例Highcharts 时间示例中所示。我不知道如何告诉它在 24 小时前开始,例如,如果现在的时间是 18 日下午 22:34,我希望它在 17 日下午 22:34 开始。我不太擅长与时间和日期相关的代码,JavaScript 也不是我的强项。我相信我需要完成的输出类似于: pointStart: Date.UTC(2012, 5, 17, 22, 34) 对于上面的示例,但我不太确定如何从 Date() 中获取它。

编辑:我不确定为什么它被标记为重复,但我试图获取相对于当前时间(现在 - 24 小时)的时间,而不是相对字符串表示(“24 小时前”)。另一个问题也根本没有提到highcharts。

4

4 回答 4

64

这实际上相当简单:

var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000));

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

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

于 2013-12-31T21:31:13.993 回答
31

您应该使用时间戳,因为您可以使用它们进行计算。

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

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

var ts = Math.round(new Date().getTime() / 1000);
var tsYesterday = ts - (24 * 3600);

请看这个小提琴:http: //jsfiddle.net/Mjm7V/

编辑: 正如尼克正确指出的那样,Date#getTime返回 UTC 时间戳(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime

于 2012-06-17T15:36:33.397 回答
5

24 小时前:

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'
于 2017-02-04T09:14:25.777 回答
2

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

new Date (Date.UTC(2012, 5, 17, 22, 34) - 24 * 3600 * 1000)
于 2012-06-17T15:28:03.327 回答