2009-11-24 41 views
52

che sto visualizzare la data e l'ora come questoData e ora Conversione in Unix timestamp

24-Novembre-2009 17:57:35

vorrei convertirlo in un timestamp unix così posso manipolarlo facilmente. Avrei bisogno di usare regex per abbinare ogni parte della stringa, quindi elaborare il timestamp unix da quello.

Sono orribile con espressioni regolari, ma mi è venuto in mente questo. Si prega di suggerire miglioramenti ^.^

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

Come posso fare questo?

+0

completa commento fianco, ma ogni volta che vedo il tuo nome penso "Ben Shalock Blocco Ben" (Rif: http://www.discogs.com/House-Of-Pain-Shamrocks-And-Shenanigans-Boom -Shalock-Lock-Boom/release/229941 :) –

+1

Mio fratello gemello malvagio, non parliamo di lui. –

+0

Duplicate: http://stackoverflow.com/questions/1457607/how-to-convert-a-gmt-timestamp-to-unix-timestamp-javascript e qui http://stackoverflow.com/questions/ 1416296/parsing-a-date-in-long-format-from-atom-feed –

risposta

85

Se hai solo bisogno di una buona funzione di analisi della data, guarderei allo date.js. Ci vorrà solo una qualsiasi stringa di data che puoi lanciare e ti restituirà un oggetto Data JavaScript.

Una volta che hai un oggetto Date, puoi chiamare il suo metodo getTime(), che ti darà millisecondi dal 1 ° gennaio 1970. Basta dividere quel risultato per 1000 per ottenere il valore di timestamp unix.

Nel codice, è sufficiente includere date.js, quindi:

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

Non hai nemmeno bisogno che la libreria analizzi quel formato, vero? – Dexter

+1

Vale la pena notare che senza date.js, Date.parse prenderà una stringa e restituirà un timestamp unix. Ma è molto severo riguardo al formato. Nell'esempio dell'OP, è necessario string.replace ('-', '/'). Oltre a questo, sono abbastanza sicuro che funzionerebbe con tutti i browser moderni. Sono d'accordo che date.js è molto più affidabile però. – Marco

+4

segui le tue espressioni regolari. Una libreria javascript localizzata è eccessiva se si utilizza un formato data fisso. Se hai il controllo su questo formato, dovresti considerare l'utilizzo di qualcosa di più neutro e più facile da analizzare, come ISO8601. – peller

52

Sembra come getTime non funzionare su risposta di cui sopra.

Date.parse(currentDate)/1000 
+0

Ho appena copiato Date.parse ('19 -04-2015 18:31:00 ')/1000 questo nella console del browser e dà NaN puoi dare la soluzione @chovy –

+2

Immagino che la tua data sia non corretto formattato. È inoltre possibile utilizzare il momento (datestring) .unix() – chovy

+0

la data è in gg-mm-aa H: i: s formato. Sto sbagliando? –

2

È possibile utilizzare la funzione Date.getTime(), o l'oggetto Date stessa che quando diviso ritorna il tempo in millisecondi.

var d = new Date(); 

d/1000 
> 1510329641.84 

d.getTime()/1000 
> 1510329641.84 
Problemi correlati