423 votes

Comment obtenir le mois et la date de JavaScript au format à 2 chiffres ?

Quand nous appelons getMonth() et getDate() sur date nous obtiendrons l'objet single digit number . Par exemple :

Pour january il affiche 1 mais j'ai besoin de l'afficher comme 01 . Comment faire ?

2 votes

0 votes

975voto

Hugo Points 1811
("0" + this.getDate()).slice(-2)

pour la date, et autres :

("0" + (this.getMonth() + 1)).slice(-2)

pour le mois.

94 votes

Cool, mais : function addZ(n){return n<10? '0'+n:''+n;} est un peu plus générique.

10 votes

La tranche est intelligente, mais elle est beaucoup plus lente qu'une simple comparaison : jsperf.com/slice-vs-comparaison

34 votes

@dak : Et quand cela va-t-il réellement compter ? Je doute que vous calculiez le mois des milliers de fois par seconde.

103voto

Boodaleh Points 176

Si vous souhaitez un format comme "AAAA-MM-DDTHH:mm:ss", cela peut être plus rapide :

var date = new Date().toISOString().substr(0, 19);
// toISOString() will give you YYYY-MM-DDTHH:mm:ss.sssZ

Ou le format de date MySQL couramment utilisé "YYYY-MM-DD HH:mm:ss" :

var date2 = new Date().toISOString().substr(0, 19).replace('T', ' ');

J'espère que cela vous aidera

1 votes

C'est la solution la plus minable que j'aie trouvée. Le seul problème ici est celui du décalage du fuseau horaire.

4 votes

Le décalage du fuseau horaire pourrait être pris en charge avec quelque chose comme : var date = new Date(new Date().getTime() - new Date().getTimezoneOffset()*60*1000).toISOString().substr(0,19).replace('T', ' ') ;

0 votes

Praym, ton code fonctionne pour moi, mais le copier-coller devait avoir un caractère caché ou quelque chose comme ça, alors je l'ai juste tapé à la main.

48voto

Sergey Metlov Points 6670

Exemple pour le mois :

function getMonth(date) {
  var month = date.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}  

Vous pouvez également étendre Date avec une telle fonction :

Date.prototype.getMonthFormatted = function() {
  var month = this.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}

5 votes

Notez que getMonth renvoie un nombre compris entre 0 et 11, et non entre 1 et 12.

4 votes

Cela renvoie des résultats incohérents. Pour novembre et décembre, elle renvoie une chaîne de caractères et pour les autres mois, elle renvoie un nombre.

0 votes

J'ai mis à jour le code pour implémenter l'avertissement de Salman A selon lequel getMonth est basé sur zéro au lieu de 1. Et j'ai ajouté des guillemets pour m'assurer qu'une chaîne est toujours retournée.

28voto

Marcel Points 397

La meilleure façon de le faire est de créer votre propre formateur simple (comme ci-dessous) :

getDate() renvoie le jour du mois (de 1 à 31)
getMonth() renvoie le mois (de 0 à 11) < base zéro, 0=janvier, 11=décembre
getFullYear() renvoie l'année (quatre chiffres) < n'utilisez pas getYear()

function formatDateToString(date){
   // 01, 02, 03, ... 29, 30, 31
   var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
   // 01, 02, 03, ... 10, 11, 12
   var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
   // 1970, 1971, ... 2015, 2016, ...
   var yyyy = date.getFullYear();

   // create the format you want
   return (dd + "-" + MM + "-" + yyyy);
}

11voto

Ce qui suit est utilisé pour convertir le format de date db2 c'est-à-dire YYYY-MM-DD en utilisant l'opérateur ternaire.

var currentDate = new Date();
var twoDigitMonth=((currentDate.getMonth()+1)>=10)? (currentDate.getMonth()+1) : '0' + (currentDate.getMonth()+1);  
var twoDigitDate=((currentDate.getDate())>=10)? (currentDate.getDate()) : '0' + (currentDate.getDate());
var createdDateTo = currentDate.getFullYear() + "-" + twoDigitMonth + "-" + twoDigitDate; 
alert(createdDateTo);

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