2012-06-17 14 views
11

Próbuję użyć wysokiej jakości wykresów, aby wyświetlić niektóre dane z ostatnich 24 godzin. Wykres wymaga czasu rozpoczęcia, gdy używasz czasu dla osi X, jak w tym przykładzie: Highcharts time example. Nie mogę wymyślić, jak powiedzieć, aby zacząć 24 godziny temu, na przykład, jeśli czas jest teraz 22:34 na 18, chcę, aby rozpocząć o godzinie 22:34 na 17. Nie jestem zbyt dobry w odniesieniu do kodu związanego z czasem i datą, a JavaScript też nie jest moją mocną stroną. Wierzę, że potrzebowałbym gotowego wyjścia, żeby było coś takiego: pointStart: Date.UTC(2012, 5, 17, 22, 34) Dla powyższego przykładu, ale nie jestem pewien, jak to uzyskać od daty().Czas względny JavaScript 24 godziny temu itp. Jak w czasie

Odpowiedz

20

Należy używać znaczników czasu, jak można obliczyć z nich.

W ten sposób otrzymasz bieżący datownik: Math.round(new Date().getTime()/1000) Należy pamiętać, że jest to czas lokalny komputera.

Teraz można uzyskać znacznik czasowy 24 godzin temu tak:

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

Proszę zobaczyć ten skrzypce: http://jsfiddle.net/Mjm7V/

Edit: Jako Nick słusznie zauważył, Date#getTime zwraca UTC timestamp (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)

+0

Dzięki, nie wiedziałem, że mogę używać znaczników czasu. – Totoro

+0

"Zwróć uwagę, że jest to czas lokalny komputera." to zrzeczenie się w odpowiedzi nie jest poprawne. Data # getTime to sygnatura czasowa UTC https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime – Nick

2

Wystarczy odjąć ilość milisekund w ciągu 24 godzin od daty:

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

Dlaczego downvotes, co jest nie tak z tego rozwiązania? – priestc

+0

To rozwiązanie nie jest wyświetlane przez 24 godziny od czasu względnego/aktualnego, ale od określonego, zakodowanego czasu .. i pytanie było już od 24 godzin. – Nick

26

To jest rzeczywiście dość proste:

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

Po prostu skonstruuj nowy Date z wartością bieżącego znacznika czasu minus 24 godziny.

(24 godzin pomnożona przez 60 minut, w każdej godzinie, pomnożonych przez 60 sekund, co minutę pomnożony przez 1000 ms w każdej sekundzie)

1

24 godziny temu:

new Date(Date.now() - 86400 * 1000).toISOString()

  1. obecnie: new Date().toISOString()
  2. wyjścia: '2017-02-04T09:15:25.233Z'
  3. Date.now() zwraca sekundy od epoki.
  4. Odejmowanie 86400 sekund w godzinach dziennych 1000 przekonwertować do milisekund
  5. wyjścia: '2017-02-03T09:14:11.789Z'
Powiązane problemy