2009-11-24 27 views
52

estoy mostrando la fecha y la hora como esto-2009 24-Novconversión de fecha y hora para Unix Timestamp

17:57:35

me gustaría convertirlo en una marca de tiempo Unix para que pueda manipularlo fácilmente. Tendría que usar expresiones regulares para hacer coincidir cada parte de la cadena y luego calcular la marca de tiempo de Unix.

Soy horrible con la expresión regular, pero se me ocurrió esto. Sugiera mejoras ^.^

/((\d){2}+)-((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)+)-((\d){4}+) ((\d){2}+):((\d){2}+):((\d){2}+)/gi 

¿Cómo puedo hacer esto?

+0

comentario lateral completa, pero cada vez que veo su nombre pienso "Ben Ben Shalock Lock" (Ref: http://www.discogs.com/House-Of-Pain-Shamrocks-And-Shenanigans-Boom -Shalock-Lock-Boom/release/229941 :) –

+1

Mi malvado hermano gemelo, no hablamos de él. –

+0

duplicado: http://stackoverflow.com/questions/1457607/how-to-convert-a-gmt-timestamp-to-unix-timestamp-javascript y aquí http://stackoverflow.com/questions/ 1416296/parsing-a-date-in-long-format-from-atom-feed –

Respuesta

85

Si solo necesita una buena función de análisis de fecha, me gustaría ver date.js. Tomará casi cualquier cadena de fecha que pueda lanzar, y le devolverá un objeto Fecha de JavaScript.

Una vez que tenga un objeto Date, puede llamar a su método getTime(), que le dará milisegundos desde el 1 de enero de 1970. Simplemente divida ese resultado entre 1000 para obtener el valor de marca de tiempo de unix.

En el código, basta con incluir date.js, entonces:

var unixtime = Date.parse("24-Nov-2009 17:57:35").getTime()/1000 
+6

Ni siquiera necesita la biblioteca para analizar ese formato, ¿verdad? – Dexter

+1

Vale la pena señalar que sin date.js, Date.parse tomará una cadena y devolverá una marca de tiempo de unix. Pero es muy estricto sobre el formato. En el ejemplo de OP, necesitarías string.replace ('-', '/'). Aparte de eso, estoy bastante seguro de que funcionaría en todos los navegadores modernos. Acepto que date.js es mucho más confiable. – Marco

+4

apegue a su expresión regular. Una biblioteca javascript localizada es exagerada si está utilizando un formato de fecha fijo. Si tiene control sobre este formato, debe considerar usar algo más neutral y más fácil de analizar, como ISO8601. – peller

52

parece que getTime no está funcionando en la respuesta anterior.

Date.parse(currentDate)/1000 
+0

Acabo de copiar Date.parse ('19 -04-2015 18:31:00 ')/1000 esto en la consola del navegador y le da a NaN puedes dar la solución @chovy –

+2

Supongo que tu cita es no está correcto formateado. También puede usar la fecha de momento (fecha_fecha) .unix() – chovy

+0

está en formato dd-mm-aa H: i: s. ¿Estoy haciendo mal? –

2

Puede utilizar Date.getTime() función, o el objeto en sí Date que cuando se divide devuelve el tiempo en milisegundos.

var d = new Date(); 

d/1000 
> 1510329641.84 

d.getTime()/1000 
> 1510329641.84 
Cuestiones relacionadas