Moment: Le format de la fonction de rappel de l'heure du calendrier renvoie une chaîne de mois corrompue

Créé le 28 mars 2017  ·  3Commentaires  ·  Source: moment/moment

J'essayais d'utiliser l'heure du calendrier pour formater mes dates en passant une fonction de rappel. Cependant, dans la condition else de mon rappel, le mois de la date formatée est incorrect.

Jan renvoyé sous la forme Jamn
Mar renvoyé sous la forme 3amr
Feb retourné comme F0b

Je fais peut-être mal, mais il semble étrange que le mois revienne de cette façon sans générer d'erreurs.

Code à reproduire

export const dateConversion = (date) => {
  // Assuming date comes in 'YYYY-MM-DD` format
  date = moment(date, 'YYYY-MM-DD');
  return date.calendar(null, {
    sameDay: '[Today]',
    nextDay: '[Tomorrow]',
    lastDay: '[Yesterday]',
    nextWeek: 'ddd',
    lastWeek: 'MMM D',
    sameElse: function(now) {
      if (this.isSame(now, 'year')) {
        return this.format('MMM D');
      } else {
        // Month is incorrectly parsed here 
        return this.format('MMM D, YYYY');
      }
    }
  });
}

Environnement
Mar 28 mars 2017 16:52:21 GMT-0400 (HAE)
28/03/2017, 16:52:21
240
Mozilla/5.0 (Macintosh ; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/56.0.2924.87 Safari/537.36
2.17.1

Commentaire le plus utile

peu importe - renvoyait la mauvaise valeur.

Tous les 3 commentaires

peu importe - renvoyait la mauvaise valeur.

@dbshwang j'ai le même problème. pouvez-vous s'il vous plaît mettre votre résolution

@avi-meslati-sp Vous ne devriez renvoyer que la chaîne pour le formatage - pas la date formatée réelle. Donc dans mon cas :

sameElse: function(now) {
  if (this.isSame(now, 'year')) {
      return this.format('MMM D');
  } else {
      return this.format('MMM D, YYYY');
  }
}

devrait en fait être

sameElse: function(now) {
  if (this.isSame(now, 'year')) {
      return 'MMM D';
  } else {
      return 'MMM D, YYYY';
  }
}
Cette page vous a été utile?
0 / 5 - 0 notes