2017-08-13 128 views
-1

我不斷收到錯誤「遺漏的類型錯誤:date3.getFullYear是不是一個函數」遺漏的類型錯誤:和getFullYear不是一個函數

我在SQL和JS格式(從另一個函數作爲參數傳遞日期變量):

min1 - in SQL format. [Like - '2017-08-13 0:0:00'] 
mindate - in JS format. [Like - 'Sun Aug 13 2017 00:00:00 GMT+0530 (India Standard Time)' ] 

我正在使用這些變量來創建一個名爲'date3'的新日期變量。我曾嘗試以下:

var date2 = min1.split(' ')[0]; // should give me '2017-08-13' 
date3 = new Date(date2); 

AND,

var date3 = new Date(); 
date3 = mindate; 

AND,

var date3 = mindate; 

AND,

var Y = parseInt(min1.split(' ')[0].split('-')[0]);  // 2017 
var M = parseInt(min1.split(' ')[0].split('-')[1]) - 1; // 7 
var D = parseInt(min1.split(' ')[0].split('-')[2]);  // 13 
var date3 = new Date(Y,M,D); 

當我CONSOLE.LOG的DATE3,它給出正確的日期。但是當我在date3上做一個getFullYear()時,它會給出錯誤:「Uncaught TypeError:getFullYear不是函數」

我試過了一切,似乎沒有任何工作。 (我甚至讀過其他一些類似的問題,有些答案是因爲'日期'是'時刻'的對象,但我不明白它的含義以及它如何幫助解決這個問題)。

UPDATE:

這裏是我如何使用和getFullYear功能。我已經試過兩件事情:

datestring = date3.getFullYear() + '-' + (date3.getMonth()+1) + '-' + (date3.getDate()); 

,並使用這裏面一個for循環

var y = date3.getFullYear(), 
m = date3.getMonth() + 1, // january is month 0 in javascript 
d = date3.getDate(); 

日早上,DATE3是如下剛創建上述循環:

var date3 = new Date(Y,M,D); 
console.log(date3); 

for (k=1; k<=x; k++) { 

    var y = date3.getFullYear(), 
    m = date3.getMonth() + 1, // january is month 0 in javascript 
    d = date3.getDate(); 
    var pad = function(val) { var str = val.toString(); return (str.length < 2) ? "0" + str : str}; 
    datestring = [y, pad(m), pad(d)].join("-"); 
    console.log("DATESTRING", datestring); 

    divCode += '<div class="swiper-slide" id="_' + datestring + '" data-hash="' + datestring + '"><b>' +datestring+ '</b><br><br>' +tableCode+ '</div>'; 

    // Incrementing date by 1 
    date3 = date3.setDate(date3.getDate() + 1); 


} 
+1

更新的代碼來顯示'date3.getFullYear()' – Dekel

+0

OK的確切用法,所以它的外面做工精細的循環。 – user3001859

+0

恐怕我在代碼中看不到任何循環... – Dekel

回答

3

setDate方法在對象上就地工作,並且函數的返回值是新日期的時間戳。

當你這樣做:

date3 = date3.setDate(date3.getDate() + 1); 
在功能

,該date3現在是一個整數(而不是一個Date()對象),所以基本上現在你的代碼做什麼1502742691133.getFullYear(),這是不對的。

您不需要將值setDate()設置爲date3。只要做到:

date3.setDate(date3.getDate() + 1); 
+0

好吧,它現在有效。謝謝! – user3001859

相關問題