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
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';
}
}
Hilfreichster Kommentar
egal - hat den falschen Wert zurückgegeben.