Eu estava tentando usar o tempo do calendário para formatar minhas datas, passando uma função de retorno de chamada. No entanto, na condição else do meu retorno de chamada, o mês da data formatada está incorreto.
Jan
devolvido como Jamn
Mar
devolvido como 3amr
Feb
devolvido como F0b
Posso estar fazendo isso errado, mas parece estranho que o mês tenha voltado assim sem lançar erros.
Código para reproduzir
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');
}
}
});
}
Ambiente
Terça-feira, 28 de março de 2017 16:52:21 GMT-0400 (EDT)
28/03/2017, 4:52:21 PM
240
Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 56.0.2924.87 Safari / 537.36
2.17.1
deixa pra lá - estava retornando o valor errado.
@dbshwang, estou tendo o mesmo problema. você pode por favor colocar sua resolução
@ avi-meslati-sp Você deve retornar apenas a string para formatação - não a data real formatada. Então, no meu caso:
sameElse: function(now) {
if (this.isSame(now, 'year')) {
return this.format('MMM D');
} else {
return this.format('MMM D, YYYY');
}
}
deveria realmente ser
sameElse: function(now) {
if (this.isSame(now, 'year')) {
return 'MMM D';
} else {
return 'MMM D, YYYY';
}
}
Comentários muito úteis
deixa pra lá - estava retornando o valor errado.