2012-06-17 28 views
11

我想用highcharts來顯示過去24小時內的一些數據。圖表需要使用x軸時間的開始時間,如本例Highcharts time example。例如,如果現在的時間是18日22時34分,我不知道如何告訴它在24小時前開始,我希望它在17日22時34分開始。我對時間和日期相關的代碼不太好,Javascript也不是我的強項。 我相信我會需要完成的輸出是這樣的: pointStart: Date.UTC(2012, 5, 17, 22, 34) 對於上面的例子,但我不知道如何從Date()中獲取。Javascript相對時間24小時前等時間

回答

20

你應該使用時間戳,你可以與他們計算。

這就是你如何得到當前時間戳: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

+0

謝謝,我不知道我可以使用時間戳。 – Totoro

+0

「請注意,這是當地電腦的時間。」答案中的免責聲明不正確。Date#getTime是UTC時間戳https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime – Nick

2

單從日期減去毫秒的數量在24小時內:

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

爲什麼downvotes,什麼是錯這個解決方案? – priestc

+0

該解決方案不會在相對/當前時間顯示24小時,而是從特定的硬編碼時間顯示..問題是從現在起24小時前。 – Nick

26

這其實很簡單:

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

只需構造一個新的Date,並將當前時間戳的值減去24小時。

(24小時乘以在每個小時60分鐘,每分鐘在每個第二乘以1000毫秒乘以60秒)

1

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'