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?
3 réponses
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.
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.
Npm install date-fns --save
Importer {format} à partir de 'date-fns'
Format (nouvelle Date (), 'MMMM, DD YYYY')
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.