10 votes

Remplissage d'une date avec JavaScript

Je veux formater une date comme ceci :

May 02 2013

mais pour le moment, ma mise en forme ressemble à ça :

May 2 2013

Comment puis-je remettre à zéro ce type de date de sorte que la jour dans la date est quelque chose comme 02 au lieu de simplement 2 ?


Voici le code que j'utilise :

var m_names = new Array("January", "February", "March", 
"April", "May", "June", "July", "August", "September", 
"October", "November", "December");

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
alert( m_names[curr_month] + " " +curr_date + " " + curr_year);

Code jsFiddle ici

24voto

palaѕн Points 23333

Vous pouvez mettre en œuvre cette logique comme suit :

var d = new Date();
var curr_date = ("0" + d.getDate()).slice(-2);
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
console.log( m_names[curr_month] + " " +curr_date + " " + curr_year);

FIDDLE


MISES À JOUR - <sup>( 1er octobre 2017 )</sup>

EcmaScript 2017 ou ES8 a introduit deux nouvelles méthodes de prototype String : padStart() y padEnd() . Nous pouvons ajouter des espaces ou des tirets supplémentaires (ou tout autre caractère), avant ou après une chaîne de caractères. Nous pouvons l'utiliser ici comme suit :

var curr_date = d.getDate().toString().padStart(2,0);

<sup>( Cette syntaxe aurait pu être plus courte si nous n'avions pas eu besoin de convertir <strong>d.getDate() </strong>en chaîne, comme <strong>padStart </strong>ne fonctionne que sur les chaînes de caractères )</sup>

Démonstration :

var m_names = new Array("January", "February", "March",
  "April", "May", "June", "July", "August", "September",
  "October", "November", "December");

var d = new Date('10/1/2017');
var curr_date = d.getDate().toString().padStart(2, 0);
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var formatted_date = m_names[curr_month] + " " + curr_date + " " + curr_year;

console.log(formatted_date);

5voto

SirDerpington Points 10310

Ce site est ce que vous pourriez faire. Vérifiez simplement si la date est supérieure à 9. Si c'est le cas, utilisez-la, sinon ajoutez un zéro en tête.

var curr_date = d.getDate();
curr_date = curr_date > 9 ? curr_date : "0" + curr_date;

2voto

Ionică Bizău Points 14484

Solution

Vérifier si curr_date est inférieur à 9. Si oui, ajoutez "0" + curr_date .

Donc, vous le faites en ligne comme ci-dessous :

curr_date = (curr_date <= 9 ? "0" : "") + curr_date

Ou, directement en alerte :

alert( m_names[curr_month] + " " + 
       (curr_date <= 9 ? "0" : "") + curr_date + 
       " " + curr_year);

Explication

Comme vous pouvez le voir, j'ai utilisé ?: opérateur .

En programmation informatique, ?: est un opérateur ternaire qui fait partie de la syntaxe d'une expression conditionnelle de base dans plusieurs langages de programmation. Il est communément appelé opérateur conditionnel, inline if (iif) ou ternaire if.

Comment cela fonctionne-t-il ?

C'est simple ! Regardez :

condition ? value_if_true : value_if_false`

ou

variable1 === variable2 ? value_if_true : value_if_false

Voir la version actualisée FIDDLE .

1voto

mwcz Points 2520

Dans la version de développement actuelle de Chrome (v28.0.1496.0), il y a une toPaddedString(n) sur chaque objet Nombre.

Number(16).toPaddedString(4)
"0016"

C'est un navigateur assez étroit à cibler, cependant, donc je doute que cela vous apporte beaucoup. Il se peut que cela fasse partie de la version de production de Chrome également, mais je n'ai pas cette version sous les yeux pour le moment. Cette fonction ne fait pas partie d'EcmaScript 5.1, il est donc préférable de ne pas s'y fier. Cependant, ce n'est pas [native code] donc...

Number(1).toPaddedString
function g(k,j){var i=this.toString(j||10);return"0".times(k-i.length)+i}

Ainsi, pour utiliser cette fonctionnalité dans n'importe quel navigateur, incluez cette ligne de code :

Number.prototype.toPaddedString = function g(k,j){var i=this.toString(j||10);return"0".times(k-i.length)+i};

Ensuite, votre mois peut être complété, comme suit :

var curr_month = d.getMonth().toPaddedString(2);

0voto

user6003847 Points 1
$("#cuentapendiente").focusout(function(){
    if($(this).val()!=""){
        $(this).val(zeroFill($(this).get(0).value,6))
    }
}

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