我一直收到错误"未捕获的TypeError:date3.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;
和
var date3 = mindate;
和
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不是函数"
我已经尝试了一切,似乎没有任何工作。 (我甚至读过其他一些类似的问题,而且有些答案说的是因为' date'是一个'对象,但我不明白这是什么意思以及它是怎样的可以帮助解决这个问题。)
更新:
这是我如何使用getFullYear函数。我尝试了两件事:
datestring = date3.getFullYear() + '-' + (date3.getMonth()+1) + '-' + (date3.getDate());
和
var y = date3.getFullYear(),
m = date3.getMonth() + 1, // january is month 0 in javascript
d = date3.getDate();
我正在使用这个' for'循环,并在循环上方创建了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);
}
答案 0 :(得分:4)
setDate
方法在对象上就位,函数的返回值是新日期的时间戳。
当你这样做时:
date3 = date3.setDate(date3.getDate() + 1);
在你的函数中,date3
现在是一个整数(而不是Date()对象),所以你的代码现在基本上做的是1502742691133.getFullYear()
,这是错误的。
您不需要将setDate()
的值设置为date3
。只是做:
date3.setDate(date3.getDate() + 1);