J'ai créé ce script pour calculer la date 10 jours à l'avance au format jj / mm / aaaa:
var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();
J'ai besoin que la date apparaisse avec des zéros en tête sur le composant jour et mois en ajoutant ces règles au script. Je n'arrive pas à le faire fonctionner.
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
et
if (MyDate.getDate <10)get.Date = '0' + getDate;
Si quelqu'un pouvait me montrer où les insérer dans le script, je serais vraiment reconnaissant.
javascript
date
date-format
time-format
leading-zero
Julian Coates
la source
la source
Réponses:
Essayez ceci: http://jsfiddle.net/xA5B7/
ÉDITER:
Pour expliquer,
.slice(-2)
nous donne les deux derniers caractères de la chaîne.Peu importe quoi, nous pouvons ajouter
"0"
au jour ou au mois, et demander simplement les deux derniers puisque ce sont toujours les deux que nous voulons.Donc si le
MyDate.getMonth()
retour9
, ce sera:donc en ajoutant
.slice(-2)
cela nous donne les deux derniers caractères qui sont:Mais si
MyDate.getMonth()
revient10
, ce sera:donc l'ajout
.slice(-2)
nous donne les deux derniers caractères, ou:la source
MyDate.setDate(MyDate.getDate() + 20);
slice()
technique dans la réponse acceptée est environ 1/10 de seconde plus rapide que la technique de @Alerosspad()
sur 1 million d'itérations. jsFiddle . "Payez votre argent, faites votre choix".Voici un exemple tiré de la documentation de l'objet Date sur le réseau de développeurs Mozilla utilisant une fonction "pad" personnalisée, sans avoir à étendre le prototype Number de Javascript. La fonction pratique qu'ils donnent à titre d'exemple est
Et ci-dessous, il est utilisé dans son contexte.
la source
pad
ne produit que des chaînes.La nouvelle façon moderne de le faire est d'utiliser
toLocaleDateString
, car elle ne vous permet pas seulement de formater une date avec une localisation appropriée, vous pouvez même passer des options de format pour archiver le résultat souhaité:Lorsque vous ignorez le premier argument, il détectera la langue du navigateur à la place. Alternativement, vous pouvez également utiliser
2-digit
l'option de l'année.Si vous n'avez pas besoin de prendre en charge d'anciens navigateurs comme IE10, c'est la façon la plus propre de faire le travail. IE10 et les versions inférieures ne comprendront pas l'argument des options.
Remarque: En outre, il existe également
toLocaleTimeString
, si vous souhaitez localiser ou formater l'heure d'une date.la source
Vous pouvez définir une fonction "str_pad" (comme en php):
la source
Pour vous, les gens du futur (ECMAScript 2017 et au-delà)
Solution
Explication
le
String.prototype.padStart(targetLength[, padString])
ajoute autant que possiblepadString
dans laString.prototype
cible afin que la nouvelle longueur de la cible soittargetLength
.Exemple
la source
.padStart(2, '0')
puisque le second paramètre est une chaîne, mais il ne sera probablement pas question , à moins que vous utilisez tapuscrit//utilisé:
la source
J'ai trouvé le moyen le plus court de le faire:
ajoutera des zéros non significatifs à tous les chiffres solitaires
la source
la source
Vous pouvez utiliser l'opérateur ternaire pour formater la date comme une instruction "if".
Par exemple:
Donc
serait similaire à une instruction if, où si getDate () renvoie une valeur inférieure à 10, puis retourne un '0' + la date, ou bien renvoie la date si supérieure à 10 (car nous n'avons pas besoin d'ajouter le début) 0). Idem pour le mois.
Edit: Oublié que getMonth commence par 0, a donc ajouté le +1 pour en tenir compte. Bien sûr, vous pouvez également dire d.getMonth () <9:, mais je pensais que l'utilisation du +1 faciliterait la compréhension.
la source
Il existe une autre approche pour résoudre ce problème, à l'aide
slice
de JavaScript.la
datestring
date de retour avec le format que vous attendez: 2019-09-01une autre approche utilise la
dateformat
bibliothèque: https://github.com/felixge/node-dateformatla source
Simplifiez-vous la vie et utilisez Moment.js un exemple de code:
la source
la source
Vous pouvez fournir des options comme paramètre pour formater la date. Le premier paramètre est pour les paramètres régionaux dont vous pourriez ne pas avoir besoin et le second est pour les options. Pour plus d'informations, visitez https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
la source
J'ai enveloppé la bonne réponse à cette question dans une fonction qui peut ajouter plusieurs zéro de tête mais par défaut, ajouter 1 zéro.
pour travailler uniquement avec des nombres et pas plus de 2 chiffres, c'est aussi une approche:
la source
Une autre option, en utilisant une fonction intégrée pour faire le remplissage (mais résultant en un code assez long!):
Et un autre, manipulant des chaînes avec des expressions régulières:
Mais sachez que l'on affichera l'année au début et le jour à la fin .
la source
En ajoutant à la réponse @modiX, c'est ce qui fonctionne ... NE LAISSEZ PAS cela comme vide
la source
Voici un exemple très simple de comment gérer cette situation.
la source
Ce qui suit vise à extraire la configuration, à s'y connecter
Date.protoype
et à l'appliquer.J'ai utilisé un
Array
pour stocker des morceaux de temps et lorsque je suispush()
this
unDate
objet, il me renvoie la longueur à parcourir. Quand j'ai fini, je peux utiliserjoin
lareturn
valeur.Cela semble fonctionner assez rapidement: 0,016 ms
démo: http://jsfiddle.net/tive/U4MZ3/
la source
Ce que je ferais, c'est de créer mon propre assistant de date personnalisé qui ressemble à ceci:
(voir aussi ce violon )
la source
Ajoutez un peu de remplissage pour permettre un zéro de tête - si nécessaire - et concaténez en utilisant votre délimiteur de choix comme chaîne.
la source
Comme le suggère @John Henckel, commencer à utiliser la méthode toISOString () facilite les choses
la source
la source
essayez ceci pour une fonction de base, aucune bibliothèque requise
la source
la source
Vous pouvez utiliser String.slice () qui extrait une section d'une chaîne et la renvoie comme une nouvelle chaîne, sans modifier la chaîne d'origine:
Ou vous pouvez également utiliser une bibliothèque telle que Moment.js pour formater la date:
la source