我有同样的问题,奇怪的是,当我升级到V3.40 fullcalendar: 检查了这一点。根据fullcalendar docs, ,format()
和toISOString
函数已在fullcalendar内被覆盖,用于模糊地计时的时刻仅返回日期,即'2017-03-06'。为了克服这个问题并设定一个时间,你需要创建一个新的时刻对象,这就是你所做的。为了确保跨浏览器的一致性分析,您应该按照moment docs的建议指定您正在解析的格式。因此,对于你的情况,这将是:
if(!start.hasTime()){
var format = 'YYYY-MM-DD HH:mm:ss';
start = moment(start.format('YYYY-MM-DD'+' '+ moment().format('HH:mm:ss')), format);
end = moment( end.format('YYYY-MM-DD'+' '+ moment().format('HH:mm:ss')), format);
}
为了使代码更清洁,简单易读,虽然,你可以创建一个使用UNIX时间戳(这是一个数字,不依赖于字符串格式)的新时刻start
时刻和使用时刻set
功能设置时间。所以,现在看起来是这样的:
if(!start.hasTime()){
var timestamp = start.valueOf();
var now = moment();
var startMomentWithNowTime = moment(timestamp).set({
'hour': now.hour(),
'minute': now.minute(),
'second': now.second()
});
start = startMomentWithNowTime;
end = startMomentWithNowTime;
}
借口描述性的变量命名startMomentWithNowTime
。还有几行,但希望更容易阅读。您也可以将此逻辑封装在一个函数中以便按需使用。希望能帮助到你!