2015-01-17 17 views
8

Devo analizzare una stringa di data e ora del formato "2015-01-16 22:15:00". Voglio analizzarlo in JavaScript Date Object. Qualche aiuto su questo?Parse 'Date & Time' stringa in Javascript che sono di formato personalizzato

Ho provato alcuni plugin jquery, moment.js, date.js, xdate.js. Ancora senza fortuna.

+2

Si prega di inviare i vostri tentativi. Altrimenti è difficile aiutare. – nha

+0

possibile duplicato di [Dove posso trovare la documentazione sulla formattazione di una data in JavaScript] (http://stackoverflow.com/questions/1056728/where-can-i-find-documentation-on-formatting-a-date-in- javascript) –

risposta

23

Con moment.js è possibile creare un oggetto momento utilizzando il String+Format constructor:

var momentDate = moment('2015-01-16 22:15:00', 'YYYY-MM-DD HH:mm:ss'); 

Quindi, è possibile convertirlo in JavaScript Data Object utilizzando toDate() method:

var jsDate = momentDate.toDate(); 
+0

Ho provato a utilizzare moment.js, ma c'è stato un errore "ReferenceError: moment is not defined". Avevo impostato anche il percorso js nel mio html. – yuva

+0

Leggi [come usarlo] (http://momentjs.com/docs/#/use-it/) nei documenti. –

+0

Come diceva Matt Johnson, devi seguire le [istruzioni] (http://momentjs.com/docs/#/use-it/browser/) per utilizzare moment.js nella tua applicazione browser. –

2
new Date("2015-01-16T22:15:00") 

Vedere Date.parse().

La stringa deve essere nel formato ISO-8601. Se si desidera analizzare altri formati, utilizzare moment.js.

moment("2015-01-16 22:15:00").toDate(); 
+0

Questo ha funzionato per me. Quello che ho fatto è stato un piccolo miglioramento del suggerimento che hai fornito, ho postato questa soluzione nel commento. Grazie :) – yuva

1

ero cercando di usare moment.js ragazzi. Ma visto che avevo questo errore, "ReferenceError: moment is not defined", ho dovuto saltarlo per ora. Sto usando una soluzione temporanea per ora.

function parseDate(dateString) { 
    var dateTime = dateString.split(" "); 
    var dateOnly = dateTime[0]; 
    var timeOnly = dateTime[1]; 

    var temp = dateOnly + "T" + timeOnly; 
    return new Date(temp); 
} 
6

Una soluzione migliore, ora sto usando date.js - https://code.google.com/p/datejs/

ho incluso lo script nella mia pagina HTML come questo -

<script type="text/javascript" src="path/to/date.js"></script> 

Poi ho semplicemente analizzato la stringa di data " 2015-01-16 22:15:00 "con il formato specificato,

var dateString = "2015-01-16 22:15:00"; 
var date = Date.parse(dateString, "yyyy-MM-dd HH:mm:ss"); 
+1

Questo fallisce per me. Sembra che questa funzione di analisi date.js funzioni solo su un singolo formato. Il secondo argomento è completamente ignorato. – Marc

1

Se siete sicuri che sia nel formato desiderato e non è necessario il controllo degli errori, è possibile analizzarlo manualmente utilizzando split (e, facoltativamente, sostituisci). Avevo bisogno di fare qualcosa di simile nel mio progetto (MM/GG/AAAA HH: mm: ss: sss) e ho modificato la mia soluzione per adattarla al tuo formato. Notare la sottrazione di 1 nel mese.

var str = "2015-01-16 22:15:00"; 
//Replace dashes and spaces with : and then split on : 
var strDate = str.replace(/-/g,":").replace(/ /g,":").split(":"); 
var aDate = new Date(strDate[0], strDate[1]-1, strDate[2], strDate[3], strDate[4], strDate[5]) ;