currDateEnd.setHours 不是函数

currDateEnd.setHours is not a function

我正在尝试将我的日期转换为 ISO 格式并将小时数设置为 23。这是我的代码:

var currDateEnd = $('#calendar').fullCalendar('getView').start;
console.log(currDateEnd);
currDateEnd.toDate().toISOString();
console.log(currDateEnd);
currDateEnd.setHours(23);

输出

Mon Oct 19 2015 02:00:00 GMT+0200 (ora legale Europa occidentale)

Mon Oct 19 2015 02:00:00 GMT+0200 (ora legale Europa occidentale)

但是在最后一行我得到这个错误:

currDateEnd.setHours is not a function

我做错了什么?有办法解决这个问题吗?

更新

运行 代码如下:

var currDateEnd = $('#calendar').fullCalendar('getView').start;
console.log("currDateEnd iso => ", currDateEnd.toDate().toISOString());

产生这个输出:

currDateEnd iso => 2015-10-19T00:00:00.000Z

这是因为setHours 是在Date 对象上执行的,而currDateEnd 是一个moment 对象。可以做moment js的hour方法,然后转成ISO字符串

currDateEnd.hour(23).toISOString()

currDateEnd.setHours(23);

应该是

currDateEnd.toDate().setHours(23);

因为 .setHours() 可以在 Date 对象 上调用,并且你有一个 Moment 对象 currDateEnd,需要转换。