2017-08-13 47 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

相关问题