J'essaie d'utiliser JS pour transformer date object
une chaîne en YYYYMMDD
format. Est - il un moyen plus facile que concaténer Date.getYear()
, Date.getMonth()
et Date.getDay()
?
javascript
date
IVR Avenger
la source
la source
Réponses:
Morceau de code modifié que j'utilise souvent:
la source
[1]
par.length===2
, car un indexeur sur une chaîne n'est pas entièrement pris en charge. Voir cette réponse pour les raisons.[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
Je n'ai pas aimé ajouter au prototype. Une alternative serait:
la source
rightNow
variable, vous pouvez enveloppernew Date
et tout récupérer en une seule ligne:(new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
, donc je l'ai fait:var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
. Assez simple, mais devrait être encapsulé.rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
Vous pouvez utiliser la
toISOString
fonction:Il vous donnera un format "aaaa-mm-jj".
la source
Moment.js pourrait être votre ami
la source
var formattedDate = moment().format('YYYYMMDD');
Si vous n'avez pas besoin d'une solution JS pure, vous pouvez utiliser l'interface utilisateur jQuery pour effectuer le travail comme ceci:
Je n'aime généralement pas importer trop de bibliothèques. Mais jQuery UI est si utile que vous l'utiliserez probablement ailleurs dans votre projet.
Visitez http://api.jqueryui.com/datepicker/ pour plus d'exemples
la source
Il s'agit d'une seule ligne de code que vous pouvez utiliser pour créer une
YYYY-MM-DD
chaîne de la date du jour.la source
toISOString()
donnera 2015-12-31T22: 00: 00 GMT +0 (deux heures avant).la source
new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
En plus de la réponse de oo, je voudrais recommander de séparer les opérations logiques du retour et de les mettre en tant que ternaires dans les variables.
Aussi, utilisez
concat()
pour assurer une concaténation sûre des variablesla source
("00" + (this.getDate())).slice(-2)
pour obtenir les chiffres à deux chiffres. Il n'y a aucune instruction "if" ou "?:", Et moins d'appels à la fonction .getX (). Si ce n'est pas un peu plus vite, c'est au moins plus lisible.Je n'aime pas modifier les objets natifs, et je pense que la multiplication est plus claire que la chaîne remplissant la solution acceptée.
Violon: http://jsfiddle.net/gbdarren/Ew7Y4/
la source
.replace('-', '')
pour qu'il réponde à la question de l'OP), alors que vous étiez fidèle à la question d'origine de l'OP et qu'il ne nécessiterait pas cette étape supplémentaire. Excellent!Solution JS simple (ES5) sans aucun problème de saut de date possible causé par l'impression Date.toISOString () en UTC:
Ceci en réponse au commentaire de @ weberste sur la réponse de @Pierre Guilbert.
la source
toISOString
renvoyer plusieurs tirets successifs?la source
la source
new Date()
crée un nouvel objet date qui est juste un wrapper autour de nr. de ms depuis 1970/01/01 00: 00: 00.000 UTC. Ensuite ,toISOString
imprime dans le fuseau horaire local.Une autre façon est d'utiliser
toLocaleDateString
avec un environnement local qui a une norme de format de date big-endian , comme la Suède, la Lituanie, la Hongrie, la Corée du Sud, ...:Pour supprimer les délimiteurs (
-
), il suffit de remplacer les non-chiffres:Cela n'a pas l'erreur potentielle que vous pouvez obtenir avec les formats de date UTC: la date UTC peut être un jour de congé par rapport à la date dans le fuseau horaire local.
la source
Vous pouvez simplement utiliser ce code d'une ligne pour obtenir la date de l'année
la source
Version peu simplifiée pour la réponse la plus populaire dans ce fil https://stackoverflow.com/a/3067896/5437379 :
la source
dateformat est un package très utilisé.
Comment utiliser:
Téléchargez et installez à
dateformat
partir de NPM. Exigez-le dans votre module:const dateFormat = require('dateformat');
puis formatez simplement vos trucs:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
la source
Ce gars ici => http://blog.stevenlevithan.com/archives/date-time-format a écrit une
format()
fonction pour JavascriptDate
objet , donc il peut être utilisé avec des formats littéraux familiers.Si vous avez besoin d'un formatage de date complet dans le Javascript de votre application, utilisez-le. Sinon, si ce que vous voulez faire est unique, la concaténation de getYear (), getMonth (), getDay () est probablement la plus simple.
la source
En travaillant à partir de la réponse de @ oo, cela vous rendra la chaîne de la date selon une chaîne de format. Vous pouvez facilement ajouter une expression régulière à 2 chiffres pour l'année et les millisecondes et ainsi de suite si vous en avez besoin.
Je ne sais cependant pas à quel point c'est efficace, surtout en termes de performances car il utilise beaucoup d'expressions régulières. Il pourrait probablement utiliser certains travaux que je ne maîtrise pas en pure js.
la source
Ce code est corrigé de la réponse de Pierre Guilbert:
(ça marche même après 10000 ans)
la source
Il semble que mootools fournit
Date().format()
: https://mootools.net/more/docs/1.6.0/Types/DateJe ne sais pas si cela vaut la peine d'inclure uniquement pour cette tâche particulière.
la source
J'utilise généralement le code ci-dessous lorsque je dois le faire.
Pour expliquer, .slice (-2) nous donne les deux derniers caractères de la chaîne.
Donc, 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 MyDate.getMonth () renvoie 9, ce sera:
donc l'ajout de .slice (-2) qui nous donne les deux derniers caractères qui est:
Mais si date.getMonth () renvoie 10, ce sera:
donc l'ajout de .slice (-2) nous donne les deux derniers caractères, ou:
la source
Si vous utilisez AngularJs (jusqu'à 1,5), vous pouvez utiliser le filtre de date :
la source
Répondre à un autre pour la simplicité et la lisibilité.
De plus, la modification des membres de classe prédéfinis existants avec de nouvelles méthodes n'est pas encouragée:
la source
Que diriez-vous de Day.js ?
C'est seulement 2 Ko, et vous pouvez aussi
dayjs().format('YYYY-MM-DD')
.https://github.com/iamkun/dayjs
la source
Si cela ne vous dérange pas d'inclure une bibliothèque supplémentaire (mais petite), Sugar.js fournit de nombreuses fonctionnalités intéressantes pour travailler avec des dates en JavaScript. Pour formater une date, utilisez la fonction de formatage :
la source
la source
date-shortcode à la rescousse!
la source
Utilisez padStart :
la source
Voici une approche plus générique qui permet à la fois des composants de date et d' heure et qui peut être triée de manière identique sous forme de nombre ou de chaîne.
En fonction de l'ordre numérique du format Date ISO, convertissez-le en fuseau horaire local et supprimez les non-chiffres. c'est à dire:
Usage
la source
Javascript natif:
la source