J'utilise actuellement Moment js pour analyser une chaîne ISO 8601 en date et heure, mais cela ne fonctionne pas correctement. Qu'est-ce que je fais mal? Et je prendrais également d'autres solutions plus faciles.
L'ISO 8601 je voudrais analyser: "2011-04-11T10:20:30Z"
En date dans la chaîne: "2011-04-11"
Et heure dans la chaîne: "10:20:30"
Et j'ai essayé console.log(moment("2011-04-11T10:20:30Z" ,moment.ISO_8601))
et console.log(moment("2011-04-11T10:20:30Z" , ["YYYY",moment.ISO_8601])
comme test, mais cela ne fait que renvoyer un objet avec toutes sortes de propriétés.
Avec moment.js
var str = '2011-04-11T10:20:30Z';
var date = moment(str);
var dateComponent = date.utc().format('YYYY-MM-DD');
var timeComponent = date.utc().format('HH:mm:ss');
console.log(dateComponent);
console.log(timeComponent);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>
Ou tout simplement avec la manipulation de chaînes
var str = '2011-04-11T10:20:30Z';
var parts = str.slice(0, -1).split('T');
var dateComponent = parts[0];
var timeComponent = parts[1];
console.log(dateComponent);
console.log(timeComponent);
Il y a deux parties à l'opération moment: lire la date/heure et la recracher. Vous avez la première partie:
moment("2011-04-11T10:20:30Z")
mais alors vous devez appeler une fonction de sortie, par exemple:
moment("2011-04-11T10:20:30Z").format('YYYY-MM-DD h:mm:ss a')