javascript - 未捕获的类型错误 : getFullYear is not a function

标签 javascript date

我不断收到错误“Uncaught TypeError: date3.getFullYear is not a function”

我有一个 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);

并且,

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 is not a function”

我已经尝试了一切,但似乎没有任何效果。 (我什至读过其他一些类似的问题,有些答案说这是因为“日期”是一个“时刻”对象,但我不明白它的含义以及它如何帮助解决这个问题)。

更新:

这是我如何使用 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);


}

最佳答案

setDate 方法在对象上就地工作,函数的返回值是新日期的时间戳。

当你这样做时:

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

在您的函数中,date3 现在是一个整数(而不是 Date() 对象),所以基本上您的代码现在所做的是 1502742691133.getFullYear() ,这是错误的。

您无需将 setDate() 的值设置为 date3。只要这样做:

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

关于javascript - 未捕获的类型错误 : getFullYear is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664470/

相关文章:

javascript:忽略字符串的大小写敏感性

date - Golang 奇怪的格式日期

javascript - 验证两个日期,其中一个日期应大于 Javascript 中的其他日期

Java日期与时区 secret 更改?

java - 为什么AWST和CCT的时间不一样?

javascript - 加载时聚焦输入框

javascript - 为计时器添加开始、停止、重置按钮

javascript - vue2如何添加和观察更改数组中的元素

javascript - $.ajax 在 IE9 中无法使用字体 url

javascript - 使用 DateAdd() 在 Javascript/Classic ASP 中设置日期格式