He estado luchando con esto por un tiempo ahora. Estoy tratando de convertir época en un objeto de fecha. La época me fue enviada en UTC. Cada vez que pasa new Date()
una época, se supone que es una época local. Intenté crear un objeto UTC, luego lo usé setTime()
para ajustarlo a la época adecuada, pero el único método que parece útil es toUTCString()
y las cadenas no me ayudan. Si paso esa cadena a una nueva fecha, debería notar que es UTC, pero no lo hace.
new Date( new Date().toUTCString() ).toLocaleString()
Mi siguiente intento fue tratar de obtener la diferencia entre la época actual local y la época actual UTC, pero tampoco pude conseguir eso.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
Solo me da diferencias muy pequeñas, menos de 1000, que está en milisegundos.
¿Alguna sugerencia?
javascript
date
utc
epoch
Shane Reustle
fuente
fuente
Respuestas:
Creo que tengo una solución más simple: establecer la fecha inicial de la época y agregar unidades UTC. Digamos que tiene una var. De época UTC almacenada en segundos. ¿Qué tal
1234567890
. Para convertir eso a una fecha adecuada en la zona horaria local:d
ahora es una fecha (en mi zona horaria) establecida enFri Feb 13 2009 18:31:30 GMT-0500 (EST)
fuente
var d = new Date(utcSeconds * 1000)
debería producir el mismo resultado.var d = new Date(1234567890000)
devuelve el mismo resultadoEs fácil,
new Date()
solo toma milisegundos, por ej.fuente
const d = new Date(epoch * 1000)
.Y solo para los registros, hice esto usando la biblioteca Moment.js , que estaba usando para formatear de todos modos.
fuente
El tiempo de época es en segundos desde el 1 de enero de 1970.
date.getTime()
devuelve milisegundos desde el 1 de enero de 1970, por lo tanto, si tiene una marca de tiempo de época, conviértala en una marca de tiempo de JavaScript multiplicándola por 1000.fuente
fuente
Para convertir el tiempo de época actual en [ms] a un tiempo de 24 horas. Es posible que deba especificar la opción para deshabilitar el formato de 12 horas .
o como JS:
Nota: El uso de
en-GB
aquí, es solo una elección (aleatoria) de un lugar usando el formato de 24 horas, ¡no es su zona horaria!fuente
d/m/yyyy
o nom/d/yyyy
? La manera correcta (más lógica) para mostrar este debe ser:yyyy-mm-dd
. ¿Ningún arrendatario?El tiempo de la época (es decir, el tiempo de la época de Unix) es casi siempre el número de segundos que han expirado desde el 1 de enero de 1970 a las 00:00:00 (hora UTC), no el número de milisegundos que algunas de las respuestas aquí han implicado.
https://en.wikipedia.org/wiki/Unix_time
Por lo tanto, si se le ha dado un valor de tiempo de Unix Epoch, probablemente será en segundos y tendrá un aspecto similar
1547035195
. Si desea que este humano sea legible en JavaScript, debe convertir el valor a milisegundos y pasar ese valor alDate(value)
constructor, por ejemplo:No necesita realizar el
d.setUTCMilliseconds(0)
paso en la respuesta aceptada porque elDate(value)
constructor de JavaScript toma un valor UTC en milisegundos (no una hora local).https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Syntax
También tenga en cuenta que debe evitar usar el
Date(...)
constructor que toma una representación de fecha y hora de cadena, esto no se recomienda (consulte el enlace anterior).fuente
¿Solo está pidiendo convertir una cadena UTC en una cadena "local"? Podrías hacerlo:
fuente
Además de la respuesta anterior por @djechlin
convierte el tiempo EPOCH en una fecha legible para humanos. Simplemente no olvide que el tipo de tiempo EPOCH debe ser un número entero.
fuente
La solución más simple que he encontrado para esto es:
Tenga en cuenta que esto no tiene el
* 1000
final de lanew Date(timestamp)
declaración, ya que esto (¡para mí de todos modos!) Siempre parece dar una fecha incorrecta, es decir, en lugar de dar el año 2019, da el año como 51015, así que tenga eso en cuenta.fuente
Si prefiere resolver las marcas de tiempo y las conversiones de fechas desde y hacia UTC y hora local sin bibliotecas como moment.js, eche un vistazo a la opción a continuación.
Para las aplicaciones que usan marcas de tiempo UTC, es posible que deba mostrar la fecha en el navegador teniendo en cuenta la zona horaria local y el horario de verano cuando corresponda. Editar una fecha que está en un horario de verano diferente, aunque en la misma zona horaria puede ser complicado.
Las extensiones
Number
y aDate
continuación le permiten mostrar y obtener fechas en la zona horaria de las marcas de tiempo. Por ejemplo, supongamos que está en Vancouver, si está editando una fecha en julio o en diciembre, puede significar que está editando una fecha en PST o PDT.Le recomiendo que compruebe el fragmento de código a continuación para probar esta solución.
Conversiones de milisegundos
Conversiones de fechas
Uso
Véalo usted mismo
Mostrar fragmento de código
fuente
EDITAR
EDITAR fijo
fuente
Teniendo en cuenta, tienes
epoch_time
disponible,fuente
var myDate = new Date( your epoch date *1000);
fuente - https://www.epochconverter.com/programming/#javascript
fuente
@Amjad, buena idea, pero una mejor implementación sería:
fuente
Primero conviértalo a String y luego reemplace el texto de la zona horaria.
fuente