我有同樣的問題,奇怪的是,當我升級到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
。還有幾行,但希望更容易閱讀。您也可以將此邏輯封裝在一個函數中以便按需使用。希望能幫助到你!