Comment puis-je supprimer l'heure de la date avec Moment.js?


269
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LLL');
};

Il affiche: "28 février 2013 09:24"

Mais je voudrais supprimer le temps à la fin. Comment puis je faire ça?

J'utilise Moment.js .


Utilisez la méthode Split pour séparer les chaînes
AmGates

Réponses:


605

Désolé de sauter si tard, mais si vous souhaitez supprimer la partie temporelle d'un moment()plutôt que de le formater , le code est:

.startOf('day')

Réf: http://momentjs.com/docs/#/manipulating/start-of/


90
Soyez prudent avec cela si vous vous déplacez entre les fuseaux horaires (ou si vous ne faites pas attention aux fuseaux horaires). J'ai eu un problème où ma date UTC était convertie en heure locale, puis postulait startOf('day'), ce qui était alors le début de la journée précédente . Corrigé avecmoment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate()
colllin

26
Veillez également à ce que cette fonction mute réellement l'objet d'origine
Dirk Boer

6
.startOf('day')ne supprime pas la partie de temps en soi, il définit simplement l'heure à 00:00:00. Donc, oui, comme l'a commenté «collin», vous devez être prudent lors de la sauvegarde de la date. Une meilleure alternative utilise format('LL'), comme cela a été répondu dans ce fil.
Sudarshan_SMD

4
Pour éviter de muter l'objet d'origine, utilisez someMoment.clone().startOf('day')ou moment(someMoment).startOf('day').
Pang

Attention, startOf ('jour') réinitialise tout et ne règle pas seulement l'heure à 00:00:00. moment().utc().add(1,'d').startOf('day')réinitialisera l'objet à aujourd'hui.
Tristan

51

Utilisation format('LL')

Selon ce que vous essayez d'en faire, cela format('LL')pourrait faire l'affaire. Cela produit quelque chose comme ceci:

Moment().format('LL'); // => April 29, 2016

26

La bonne façon serait de spécifier l'entrée selon vos besoins, ce qui vous donnera plus de flexibilité.

La présente définition comprend les éléments suivants

LTS : 'h:mm:ss A', LT : 'h:mm A', L : 'MM/DD/YYYY', LL : 'MMMM D, YYYY', LLL : 'MMMM D, YYYY h:mm A', LLLL : 'dddd, MMMM D, YYYY h:mm A'

Vous pouvez utiliser n'importe lequel de ces éléments ou modifier l'entrée passée dans moment (). Format (). Par exemple, pour votre cas, vous pouvez passer moment.utc(dateTime).format('MMMM D, YYYY').


9
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LL')
}

6

Vous pouvez également utiliser ce format:

moment().format('ddd, ll'); // Wed, Jan 4, 2017


6

Avec les nouvelles versions de moment.js, vous pouvez également faire ceci:

var dateTime = moment();

var dateValue = moment({
    year: dateTime.year(),
    month: dateTime.month(),
    day: dateTime.date()
});

Voir: http://momentjs.com/docs/#/parsing/object/ .


Ne serait-ce pas date: dateTime.date()au lieu de day: dateTime.date()?
philfreo

1
«jour et date désignent tous deux le jour du mois.» des documents. dayfonctionne avant la version 2.8.4.
oldwizard

6

D'accord, donc je sais que je suis en retard à la fête. Comme 6 ans de retard, mais c'était quelque chose que j'avais besoin de comprendre et de le mettre en forme AAAA-MM-JJ.

moment().format(moment.HTML5_FMT.DATE); // 2019-11-08

Vous pouvez également passer un paramètre tel que , 2019-11-08T17:44:56.144.

moment("2019-11-08T17:44:56.144").format(moment.HTML5_FMT.DATE); // 2019-11-08

https://momentjs.com/docs/#/parsing/special-formats/


4

Chaque fois que j'utilise la moment.jsbibliothèque, je spécifie le format souhaité de cette façon:

moment(<your Date goes here>).format("DD-MMM-YYYY")

ou

moment(<your Date goes here>).format("DD/MMM/YYYY")

... etc j'espère que vous avez l'idée

Dans la fonction de formatage, vous mettez le format souhaité. L'exemple ci-dessus supprimera tous les éléments indésirables de la date tels que les minutes et les secondes


Ce n'est pas une bonne idée si vous souhaitez afficher votre contenu dans différents paramètres régionaux. Si vous souhaitez afficher les dates dans le format correct pour les paramètres régionaux de l'utilisateur, vous devez utiliser l' un des formats de date prédéfinie ( L, LL, etc.)
AJ Richardson

Pourquoi vous avez défini MMM trois fois.
Menai Ala Eddine - Aladdin

MMM vous donnera les 3 premières lettres du mois. "Apr" MMMM vous donnera un nom complet du mois
Adrian Grzywaczewski

4

Pour les gens comme moi qui veulent le format de date longue ( LLLL) mais sans l'heure, il y a un problème GitHub pour cela: https://github.com/moment/moment/issues/2505 . Pour l'instant, il existe une solution:

var localeData = moment.localeData( moment.locale() ),
    llll = localeData.longDateFormat( 'llll' ),
    lll = localeData.longDateFormat( 'lll' ),
    ll = localeData.longDateFormat( 'll' ),
    longDateFormat = llll.replace( lll.replace( ll, '' ), '' );
var formattedDate = myMoment.format(longDateFormat);

1
Enfin une réponse sensée. Prenez mon upvote monsieur! Le problème n'a pas encore été résolu, il semble.
oyalhi

3

Vous pouvez utiliser ce constructeur

moment({h:0, m:0, s:0, ms:0})

http://momentjs.com/docs/#/parsing/object/

console.log( moment().format('YYYY-MM-DD HH:mm:ss') )

console.log( moment({h:0, m:0, s:0, ms:0}).format('YYYY-MM-DD HH:mm:ss') )
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


Ajoutez une description du minerai ici
Mathews Sunny

C'est intéressant! Cela crée un moment et remplace l'heure, les minutes et les secondes tout en conservant la date sous-jacente. Intéressant car j'aurais deviné que cela moment({h:0, m:0, s:0, ms:0})m'aurait donné le 1er janvier 1970 plutôt qu'aujourd'hui.
Simon_Weaver

Ressemble également à moment({ h: 0 })la même chose.
Simon_Weaver

1
Les docs disentOmitted units default to 0 or the current date, month, and year.
Simon_Weaver

2

Essaye ça:

moment.format().split("T")[0]

Attention à cette méthode, comme 1993-06-07T22:00:00.000Zil en résultera alors 1993-06-07que c'est le début de la journée de1993-06-08
Tom
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.