web-dev-qa-db-fra.com

Conversion de chaîne de script Google Apps en date

J'ai des problèmes pour convertir une chaîne en un objet date dans le script Google Apps.

Mes dates sont au format suivant, à partir d'une API tierce:

2013-01-17T17:34:50.507

J'essaye de convertir ceci en un objet Date:

return Date(stringDate);

Et cela est retourné:

Thu Jan 01 01:00:00 GMT+01:00 1970

Quelqu'un peut-il me dire ce que je fais mal et comment résoudre ce problème?

Merci beaucoup

20
Sherlock

Il ne semble pas que l'objet Date sache comment gérer cette date. La date est au format ISO 8601 . Javascript peut gérer les dates si elles reçoivent des informations de fuseau horaire.

Vous devrez faire quelques tests, mais si les dates qui vous sont données sont en heure UTC, ajoutez simplement un Z à la fin de la chaîne de date avant d'appeler new Date().

Modifier: l'objet Apps Script Date ne semble pas gérer un fuseau horaire autre que UTC lors de l'analyse d'une date. J'ai ouvert un problème pour cela .

7
Phil Bozak

Avec moment.js , il est aussi simple que cela d'analyser n'importe quel format ISO 8601 .

var date = Moment.moment("2013-01-17T17:34:50.507").toDate();

Vous pouvez également utiliser moment.js pour analyser votre chaîne de date arbitraire.

Pour utiliser moment.js dans GAS, il vous suffit de l'ajouter dans l'éditeur de script. Ouvrez votre script dans l'éditeur de script GAS et allez dans "Ressources" puis "Bibliothèques ...", puis mettez cette clé de projet MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48 et cliquez sur "Ajouter". Choisissez la version dans la liste déroulante, puis cliquez sur "Enregistrer". Vous êtes maintenant prêt à utiliser moment.js dans GAS.

moment.js peut être utilisé pour analyser une chaîne de date, créer une chaîne de date formatée et de nombreuses autres manipulations de date. Merci à l'auteur!

Vous pouvez trouver la documentation moment.js ici .

9
kanji

Cela ne fonctionne pas en GScript, du moins pour moi au moment où je l'écris. Ce message sert une alternative de travail: Comment puis-je formater cette chaîne de date pour que les scripts Google la reconnaissent?

5
user3310435

Pour l'instant, new Date() semble fonctionner:

var dT = new Date("2013-01-17T17:34:50.507");
console.info("dT: %s or %d", dT, dT.getTime());

retour dT: Thu Jan 17 17:34:50 GMT+01:00 2013 or 1.358440490507E12 dans le script Google Apps

0
B.No