web-dev-qa-db-fra.com

Analyser la chaîne 'Date & Time' en Javascript qui sont au format personnalisé

Je dois analyser une chaîne de date et d'heure au format "2015-01-16 22:15:00". Je veux analyser ceci dans JavaScript Date Object. Une aide à ce sujet?

J'ai essayé quelques plugins jquery, moment.js, date.js, xdate.js. Toujours pas de chance.

13
yuva

Avec moment.js, vous pouvez créer un objet moment en utilisant constructeur String + Format :

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

Ensuite, vous pouvez le convertir en objet de date JavaScript à l'aide de la méthode toDate () :

var jsDate = momentDate.toDate();
30
moises.vilar
new Date("2015-01-16T22:15:00")

Voir Date.parse () .

La chaîne doit être au format ISO-8601. Si vous souhaitez analyser d'autres formats, utilisez moment.js .

moment("2015-01-16 22:15:00").toDate();
7
dusky

Une meilleure solution, j'utilise maintenant date.js - https://code.google.com/p/datejs/

J'ai inclus le script dans ma page html comme ceci -

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

Ensuite, j'ai simplement analysé la chaîne de date "2015-01-16 22:15:00" en spécifiant le format comme,

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

J'essayais d'utiliser les gars de moment.js. Mais comme je rencontrais cette erreur, "ReferenceError: moment n'est pas défini", j'ai dû l'ignorer pour l'instant. J'utilise une solution de contournement temporaire pour l'instant.

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

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

Si vous êtes sûr qu'il est au format souhaité et que vous n'avez pas besoin de vérifier les erreurs, vous pouvez l'analyser manuellement à l'aide de la division (et éventuellement la remplacer). J'avais besoin de faire quelque chose de similaire dans mon projet (MM/JJ/AAAA HH: mm: ss: sss) et j'ai modifié ma solution pour l'adapter à votre format. Remarquez la soustraction de 1 dans le mois.

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]) ; 
1
JSub