Moment: Das Format der Callback-Funktion für die Kalenderzeit gibt eine beschädigte Monatszeichenfolge zurück

Erstellt am 28. März 2017  ·  3Kommentare  ·  Quelle: moment/moment

Ich habe versucht, die Kalenderzeit zu verwenden, um meine Daten zu formatieren, indem ich eine Rückruffunktion übergeben habe. In der else-Bedingung meines Rückrufs ist jedoch der Monat des formatierten Datums falsch.

Jan zurückgegeben als Jamn
Mar zurückgegeben als 3amr
Feb zurückgegeben als F0b

Vielleicht mache ich das falsch, aber es scheint seltsam, dass der Monat auf diese Weise zurückkommt, ohne dass Fehler ausgegeben werden.

Code zum reproduzieren

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');
      }
    }
  });
}

Umfeld
Di 28. März 2017 16:52:21 GMT-0400 (EDT)
28.03.2017, 16:52:21
240
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/56.0.2924.87 Safari/537.36
2.17.1

Hilfreichster Kommentar

egal - hat den falschen Wert zurückgegeben.

Alle 3 Kommentare

egal - hat den falschen Wert zurückgegeben.

@dbshwang ich habe das gleiche Problem. kannst du bitte deine Auflösung angeben

@avi-meslati-sp Sie sollten nur die Zeichenfolge zum Formatieren zurückgeben - nicht das tatsächlich formatierte Datum. Also in meinem Fall:

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

sollte eigentlich sein

sameElse: function(now) {
  if (this.isSame(now, 'year')) {
      return 'MMM D';
  } else {
      return 'MMM D, YYYY';
  }
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen