web-dev-qa-db-fra.com

Comment analyser ISO 8601 au format date et heure en utilisant Moment js en Javascript?

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.

15
Walter

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);
32
Xotic750

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')
13
machineghost