1451 votes

Où puis-je trouver de la documentation sur le formatage d'une date en JavaScript ?

J'ai remarqué que la fonction JavaScript new Date() est très intelligente car elle accepte les dates dans plusieurs formats.

Xmas95 = new Date("25 Dec, 1995 23:15:00")
Xmas95 = new Date("2009 06 12,12:52:39")
Xmas95 = new Date("20 09 2006,12:52:39")

Je n'ai trouvé nulle part de documentation montrant tous les formats de chaîne de caractères valides lors de l'appel de la fonction new Date() fonction.

Il s'agit de convertir une chaîne de caractères en date. Si nous regardons le côté opposé, c'est-à-dire la conversion d'un objet date en chaîne, jusqu'à présent j'avais l'impression que JavaScript n'avait pas d'API intégrée pour formater un objet date en chaîne.

Note de l'éditeur : L'approche suivante est la tentative de l'auteur de la demande qui a fonctionné sur un navigateur particulier, mais qui ne fonctionne pas no le travail en général ; voir les réponses sur cette page pour voir des solutions réelles.

Aujourd'hui, j'ai joué avec le toString() sur l'objet date et, étonnamment, elle sert à formater la date en chaînes de caractères.

var d1 = new Date();
d1.toString('yyyy-MM-dd');       //Returns "2009-06-29" in Internet Explorer, but not Firefox or Chrome
d1.toString('dddd, MMMM ,yyyy')  //Returns "Monday, June 29,2009" in Internet Explorer, but not Firefox or Chrome

Je n'ai pas non plus trouvé de documentation sur toutes les façons de formater l'objet date en une chaîne de caractères.

Où se trouve la documentation qui répertorie les spécificateurs de format pris en charge par le système de gestion de l'information ? Date() objet ?

169 votes

Vos exemples ne fonctionnent pas réellement comme vous le pensez : jsfiddle.net/edelman/WDNVk/1

29 votes

Désolé, passer des chaînes de format dans toString fonctionne en .NET, et cela peut fonctionner en Java, mais comme Jason l'a souligné, cela ne fonctionne pas en Javascript.

16 votes

Les gens se souviennent - questions, peu importe comment canoniques, doivent rester des questions . Veuillez vous abstenir de toute modification qui transformerait cette question en réponse, affinerait et maintiendrait l'image de l'entreprise. réponses à la place. Merci :)

1095voto

Haim Evgi Points 40786

J'aime 10 façons de formater l'heure et la date en utilisant JavaScript y Travailler avec des dates .

En gros, vous avez trois méthodes et vous devez combiner les ficelles pour vous-même :

getDate() // Returns the date
getMonth() // Returns the month
getFullYear() // Returns the year

Exemple :

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth() + 1; //Months are zero based
var curr_year = d.getFullYear();
console.log(curr_date + "-" + curr_month + "-" + curr_year);

30 votes

Ces deux sites ont des licences restrictives. Donc si vous utilisez le code (sans autorisation), vous serez en infraction. Momentjs ( stackoverflow.com/a/10119138/278976 ) semble être une bien meilleure option et est sous licence MIT.

1 votes

@McKay la question portait spécifiquement sur les formats de chaîne, une fonctionnalité JS non standard.

4 votes

@peller Cette réponse répond à la question "Comment puis-je formater des dates en javascript ?" qui est effectivement le titre de la question. Dans le corps de la question, il est tout à fait induit en erreur. Et, à votre propos, cette réponse ne parle pas du formatage des chaînes de caractères en utilisant des bibliothèques aléatoires non standard ou non mentionnées. Mais cette partie de la question a été posée de manière incorrecte, comme le souligne le commentaire n°1 de la question. Donc, cela répond à la vraie question, mais pas au formatage des chaînes de caractères qui n'existe pas réellement.

684voto

chx007 Points 5685

Moment.js

Il s'agit d'une bibliothèque de dates JavaScript (légère)* permettant d'analyser, de manipuler et de formater les dates.

var a = moment([2010, 1, 14, 15, 25, 50, 125]);
a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
a.format("ddd, hA");                       // "Sun, 3PM"

(*) léger signifie 9.3KB minifié + gzippé dans la plus petite configuration possible (feb 2014)

7 votes

Cela permet également de créer un modèle de décorateur autour de l'objet Date au lieu d'utiliser l'objet principal, ce qui réduit les risques de conflits.

4 votes

Je ne pense pas être déjà tombé sur une bibliothèque en cualquier Un langage/environnement de programmation qui remplit parfaitement son rôle. La documentation est également très complète et très, très bonne. Je suis vraiment heureux d'avoir trouvé ce langage, car les dates ont été très difficiles à gérer dans le passé (bien que Datejs ait quelque peu amélioré la situation pour moi).

0 votes

Pour information, moment.min.js est actuellement à 14,3 KB.

429voto

casid Points 3697

Si vous utilisez déjà jQuery UI dans votre projet, vous pouvez utiliser la méthode intégrée de datepicker pour formater votre objet date :

$.datepicker.formatDate('yy-mm-dd', new Date(2007, 1 - 1, 26));

Toutefois, le sélecteur de date ne permet de formater que les dates, et non les heures.

Jetez un coup d'œil à jQuery UI datepicker formatDate les exemples.

0 votes

Comment lui dire d'utiliser l'heure locale ou le zoulou ?

7 votes

Je préfère utiliser cette solution capable d'obtenir l'heure sans aucune bibliothèque : new Date().toTimeString().match( /^([0-9]{2} :[0-9]{2} :[0-9]{2})/ )[0] FYI

0 votes

Existe-t-il un moyen de faire cela. $.datepicker.formatDate('yy-mm-dd', new Date("txtAdvDate".Val()) ; ou quelque chose comme ça

227voto

Adrian Maire Points 1541

Fonction de mise en forme personnalisée :

Pour les formats fixes, une simple fonction fait l'affaire. L'exemple suivant génère le format international YYYY-MM-DD :

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1;
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

Remarque : il n'est toutefois pas conseillé d'étendre les bibliothèques standard Javascript (par exemple en ajoutant cette fonction au prototype de Date).

Une fonction plus avancée pourrait générer une sortie configurable en fonction d'un paramètre de format. Vous trouverez quelques bons exemples sur cette même page.

Si écrire une fonction de formatage est trop long, il existe de nombreuses bibliothèques qui le font. D'autres réponses les ont déjà énumérées. Mais l'augmentation des dépendances a aussi son pendant.

Fonctions de formatage ECMAScript standard :

Depuis les versions plus récentes de l'ECMAscript, l'option Date possède certaines fonctions de formatage spécifiques :

toDateString : Dépend de la mise en œuvre, ne montrer que la date.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString : Afficher la date et l'heure ISO 8601.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

toJSON : Stringifier pour JSON.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString : Selon l'implémentation, une date au format local.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString : Dépendant de l'implémentation, une date&heure au format local.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString : Dépend de l'implémentation, une heure au format local.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

toString : Generic toString for Date.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 11 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

Remarque : il est possible de générer une sortie personnalisée à partir de ces fonctions de formatage :

new Date().toISOString().slice(0,10); // By @Image72, return YYYY-MM-DD

10 votes

Cette réponse devrait être acceptée, car elle donne le format requis (01-01-2000, et non 1-1-2000).

6 votes

New Date().toISOString().slice(0,10) // "2015-04-27"

3 votes

Il serait très utile de ne pas avoir l'exemple du 11 septembre pour que l'on sache clairement à quelle position le jour et le mois sont représentés.

220voto

Scott Offen Points 2019

Où se trouve la documentation qui répertorie les spécificateurs de format pris en charge par l'outil de gestion de l'image ? Date() objet ?

Je suis tombé sur ce sujet aujourd'hui et j'ai été assez surpris que personne n'ait pris le temps de répondre à cette simple question. Il est vrai qu'il existe de nombreuses bibliothèques pour aider à la manipulation des dates. Certaines sont meilleures que d'autres. Mais ce n'était pas la question posée.

À ma connaissance, le JavaScript pur ne prend pas en charge les spécificateurs de format. de la manière dont vous avez indiqué vouloir les utiliser . Mais il prend en charge des méthodes de formatage des dates et/ou des heures, telles que .toLocaleDateString() , .toLocaleTimeString() y .toUTCString() .

El Date La référence d'objet que j'utilise le plus fréquemment se trouve sur le Site web de w3schools.com (mais une recherche rapide sur Google en révélera beaucoup d'autres qui pourraient mieux répondre à vos besoins).

Notez également que le Propriétés de l'objet Date La section fournit un lien vers prototype qui illustre certaines façons d'étendre l'objet Date avec des méthodes personnalisées. Il y a eu un certain débat Au fil des ans, la communauté JavaScript s'est interrogée sur le fait de savoir s'il s'agissait ou non d'une bonne pratique. Je ne plaide pas pour ou contre cette pratique, je me contente d'en souligner l'existence.

26 votes

MDN est également une excellente référence : developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/

2 votes

Ma réponse a tenté de répondre à cette question également. Je crois que les navigateurs Firefox ou Mozilla ont déjà fourni une méthode Date.toString() qui prenait une telle chaîne de formatage. Malheureusement, je ne trouve aucune trace de l'ancienne documentation. Elle ne fait plus partie de la norme et ne semble plus être prise en charge nulle part, même dans Firefox.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X