我正在尝试使用highcharts来显示过去24小时内的一些数据。图表需要使用x轴时间的开始时间,如本例Highcharts time example中所示。我不知道如何告诉它如何在24小时前开始,例如,如果时间是18日下午22:34,我希望它在17日下午22:34开始。我对时间和日期相关的代码并不是很好,Javascript也不是我的强项。
我相信我需要完成的输出是这样的:
pointStart: Date.UTC(2012, 5, 17, 22, 34)
对于上面的例子,但我不太确定如何从Date()获得它。
答案 0 :(得分:35)
这实际上非常简单:
var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000));
只需构建一个新的Date
,其值为当前时间戳减去24小时。
(24小时乘以每小时60分钟乘以每分钟60秒乘以每秒1000毫秒)
答案 1 :(得分:23)
您应该使用时间戳,因为您可以使用它们进行计算。
这是获取当前时间戳的方式:Math.round(new Date().getTime() / 1000)
请注意,这是计算机当地时间。
现在你可以在24小时前得到这样的时间戳:
var ts = Math.round(new Date().getTime() / 1000);
var tsYesterday = ts - (24 * 3600);
请看这个小提琴:http://jsfiddle.net/Mjm7V/
修改强>
正如Nick正确指出的那样,Date#getTime
返回UTC时间戳(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)
答案 2 :(得分:2)
只需从日期开始减去24小时内的毫秒数:
new Date (Date.UTC(2012, 5, 17, 22, 34) - 24 * 3600 * 1000)
答案 3 :(得分:2)
24小时前:
new Date(Date.now() - 86400 * 1000).toISOString()
new Date().toISOString()
'2017-02-04T09:15:25.233Z'
Date.now()
返回自纪元以来的秒数。86400
天减去1000
秒以转换为毫秒'2017-02-03T09:14:11.789Z'