无法使用moment.js进行格式化

8
我正在尝试使用 moment.js 格式化一个日期数组,但是我收到了以下错误:

dayOfWeek.format 不是一个函数

我已经正确导入了库。

var startOfWeek = moment().startOf('isoWeek');
var endOfWeek = moment().endOf('isoWeek');

var days = [];
var day = startOfWeek;

while (day <= endOfWeek) {
    days.push(day.toDate());
    day = day.clone().add(1, 'd');
}




var week = days.map(function(dayOfWeek, i){
  console.log(dayOfWeek);
  dayOfWeek.format("dddd, DD-MM-YYYY")
});

Sam,看看我的帖子,它解释了为什么你的代码失败了。 - loelsonk
4个回答

9
您的代码将失败,因为 dayOfWeek 不是 moment 对象。
要检查您的变量是否为 moment 对象,请使用 .isMomentmoment.isMoment(dayOfWeek)
要解决问题,只需替换原来的代码即可。
dayOfWeek.format("dddd, DD-MM-YYYY")

使用

moment(dayOfWeek).format("dddd, DD-MM-YYYY")

您还需要在.map函数内部添加return语句。

工作示例:

var startOfWeek = moment().startOf('isoWeek');
var endOfWeek = moment().endOf('isoWeek');

var days = [];
var day = startOfWeek;

while (day <= endOfWeek) {
    days.push(day.toDate());
    day = day.clone().add(1, 'd');
}




var week = days.map(function(dayOfWeek, i){
  return moment(dayOfWeek).format("dddd, DD-MM-YYYY")
});

console.log(week);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


完美运行!感谢您详尽的回答! - Sam

3

1
dayOfWeek = moment(dayOfWeek).format("dddd, DD-MM-YYYY");

1
只是一个提示,你也可以这样做。

var currentDate = moment(new Date()); // pass your date obj here.
console.log(currentDate.format('DD-MM-YY HH:mm:ss')); // later simply do this.
<script src="https://unpkg.com/moment@2.22.2/min/moment.min.js"></script>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接