J'ai le code suivant dans mon application RN.

  getFormattedDate = (date) => {
    const formattedDate = moment(new Date(date)).format('MMMM, DD YYYY');
    return { date: formattedDate };
  }

Lorsque j'exécute cela sur l'émulateur, la date formatée s'affiche correctement. Mais quand j'exécute cela sur l'appareil, il dit, date invalide. Qu'est-ce que je fais mal ici?

1
Shashika 20 juin 2019 à 09:52

3 réponses

Meilleure réponse

D'après vos commentaires, je suppose que le paramètre date est une chaîne. Si vous souhaitez créer un nouvel instant à partir d'une chaîne, vous devez passer le format de date. Le moment nouvellement créé peut ensuite être formaté avec .format pour obtenir à nouveau une chaîne.

Changement:

const formattedDate = moment(new Date(date)).format('MMMM, DD YYYY');

À:

const formattedDate = moment(date,"MMM, DD YYYY").format("MMMM, DD YYYY");

Vous trouverez ici plus de détails sur le format de chaîne.

1
Tim 20 juin 2019 à 08:04

Moment est 150 fois plus lent que la nouvelle date. Veuillez l'essayer comme ceci si vous voulez utiliser ce code.

 getFormattedDate = async (date) => {
    const formattedDate = await moment(new Date(date)).format('MMMM,DD YYYY');
    return { date: formattedDate };
  }

Vous pouvez le lire ici pour plus de détails https://github.com/moment/moment/issues/731

Je suggère d'éviter d'utiliser Moment en raison de la performance. Utilisez la nouvelle date (), puis récupérez le jour, le mois et l'année et changez au format approprié en joignant les chaînes comme vous le souhaitez. Utilisez uniquement la bibliothèque de dates.

0
Piyush Abhishek Singh 20 juin 2019 à 08:47

Npm install date-fns --save

Importer {format} à partir de 'date-fns'

Format (nouvelle Date (), 'MMMM, DD YYYY')

Consultez ce document

0
Sathiyamoorthi 20 juin 2019 à 07:54