コールバック関数を渡して、カレンダー時間を使用して日付をフォーマットしようとしました。 ただし、コールバックのelse条件では、フォーマットされた日付の月が正しくありません。
Jan
はJamn
として返されます
Mar
は3amr
として返されます
Feb
はF0b
として返されます
私はこれを間違っているかもしれませんが、月がエラーをスローせずにこのように戻ってくるのは奇妙に思えます。
再現するコード
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');
}
}
});
}
環境
2017年3月28日火曜日16:52:21GMT-0400(EDT)
2017年3月28日、午後4時52分21秒
240
Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_6)AppleWebKit / 537.36(KHTML、Geckoなど)Chrome / 56.0.2924.87 Safari / 537.36
2.17.1
nevermind-間違った値を返していました。
@dbshwang私は同じ問題を抱えています。 解像度を入れていただけませんか
@ avi-meslati-sp実際のフォーマットされた日付ではなく、フォーマット用の文字列のみを返す必要があります。 だから私の場合:
sameElse: function(now) {
if (this.isSame(now, 'year')) {
return this.format('MMM D');
} else {
return this.format('MMM D, YYYY');
}
}
実際にする必要があります
sameElse: function(now) {
if (this.isSame(now, 'year')) {
return 'MMM D';
} else {
return 'MMM D, YYYY';
}
}
最も参考になるコメント
nevermind-間違った値を返していました。