最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Can't format using moment.js - Stack Overflow

programmeradmin6浏览0评论

I am trying to format a array of dates using moment.js but I get an error stating

dayOfWeek.format is not a function

I am correctly imported

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

I am trying to format a array of dates using moment.js but I get an error stating

dayOfWeek.format is not a function

I am correctly imported

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")
});
Share Improve this question edited Jul 2, 2018 at 13:19 Vikasdeep Singh 21.8k16 gold badges81 silver badges106 bronze badges asked Jul 2, 2018 at 13:01 SamSam 1271 gold badge4 silver badges9 bronze badges 1
  • Sam, see my post, it explains why your code fails. – loelsonk Commented Jul 2, 2018 at 13:24
Add a ment  | 

4 Answers 4

Reset to default 9

Your code will fail because dayOfWeek is not moment object.

To check if your variable is moment object use .isMoment:

moment.isMoment(dayOfWeek).

To fix your problem simply replace

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

with

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

You are also missing return statement inside .map function.

Working example:

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./ajax/libs/moment.js/2.22.2/moment.min.js"></script>

moment().format() function usage is not correct.

Current is:

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

Change to:

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

Check here for more information: https://momentjs./docs/#/parsing/string-formats/

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

Just a tip, You can also do this

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./[email protected]/min/moment.min.js"></script>

发布评论

评论列表(0)

  1. 暂无评论