2012-06-17 26 views
11

Estoy tratando de usar los gráficos más altos para mostrar algunos datos en las últimas 24 horas. El gráfico requiere la hora de inicio cuando usa el tiempo para el eje x, como en este ejemplo Highcharts time example. No puedo imaginar cómo decir que empiece hace 24 horas, por ejemplo, si ahora era las 22:34 del día 18, quiero que comience a las 22:34 del día 17. No soy muy bueno con el código relacionado con el tiempo y la fecha y Javascript tampoco es mi punto fuerte. Creo que necesitaría que la salida final fuera algo así como: pointStart: Date.UTC(2012, 5, 17, 22, 34) Para el ejemplo anterior, pero no estoy tan seguro de cómo obtenerlo de Date().Tiempo relativo de JavaScript hace 24 horas, etc. como el tiempo

Respuesta

20

Debe utilizar marcas de tiempo como se puede calcular con ellos.

Así es como obtienes la marca de tiempo actual: Math.round(new Date().getTime()/1000) Ten en cuenta que esta es la hora local de las computadoras.

Ahora usted puede conseguir la marca de tiempo hace 24 horas como esto:

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

Consulte este violín: http://jsfiddle.net/Mjm7V/

Editar: Como Nick señaló correctamente, Date#getTime devuelve la marca de tiempo UTC (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime)

+0

Gracias, no sabía que podría usar marcas de tiempo. – Totoro

+0

"Tenga en cuenta que esta es la hora local de las computadoras". ese descargo de responsabilidad en la respuesta no es correcto. Fecha # getTime es la marca de tiempo UTC https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime – Nick

2

Sólo resta la cantidad de milisegundos en las 24 horas siguientes a la fecha:

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

Por qué los downvotes, es malo en esta solución? – priestc

+0

Esta solución no muestra las 24 horas de la hora relativa/actual, sino de un tiempo específico, codificado ... y la pregunta estaba en llegar hace 24 horas a partir de ahora. – Nick

26

Esto es realmente bastante simple:

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

Simplemente construya un nuevo Date con el valor de la marca de tiempo actual menos 24 horas.

(24 horas multiplicado por 60 minutos en cada hora multiplicado por 60 segundos en cada minuto multiplicado por 1000 milisegundos en cada segundo) hace

1

24 horas:

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

  1. ahora: new Date().toISOString()
  2. salidas: '2017-02-04T09:15:25.233Z'
  3. Date.now() regresa segundos desde epoch.
  4. Restar 86400 segundos en un día veces 1000 para convertir a milisegundos
  5. salidas: '2017-02-03T09:14:11.789Z'
Cuestiones relacionadas