【问题标题】:date.getFullYear is not a function inside while()date.getFullYear 不是 while() 中的函数
【发布时间】:2019-12-24 17:32:19
【问题描述】:

我在 node.js v11.6.0 中运行它

const now = new Date(Date.now());
let date = now;
date.setFullYear(date.getFullYear() - 1);
let str = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();
while(!data[str]){
    date = date.setDate(date.getDate() - 1);
    str = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();
}

得到:

trail.js:15 str = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();
TypeError: date.getFullYear is not a function

在 while 循环中 date.setDate() 有效,但 date.getFullYear() 突然不是一个函数。

【问题讨论】:

标签: javascript node.js date


【解决方案1】:

当您调用date.setDate(date.getDate() - 1); 时,您将setDate 的返回值分配给date,它是一个整数。这就是为什么你不能稍后再调用.getFullYear,因为数字没有那个方法。

来自MDN

返回值

从 1970 年 1 月 1 日 00:00:00 UTC 到 给定日期(Date 对象也已就地更改)。

while(!data[str]){
    date.setDate(date.getDate() - 1);
    str = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate();
}

请记住,date.getMonth() 返回一个介于 0 和 11 之间的整数。如果要正确格式化,可以检查:

Format JavaScript date as yyyy-mm-dd

【讨论】:

  • 哦,对了,我只需要调用 setter 并摆脱分配。哈哈。
  • 但是月份数字仍然是错误的,并且不会填充到两位数(日期也不会)。 :-(
  • @RobG 我专注于他提到的问题,这就是我错过它的原因。编辑了我的答案来解决这个问题。
猜你喜欢
  • 2020-12-16
  • 2013-08-04
  • 2019-07-04
  • 2015-02-11
  • 2013-12-22
  • 1970-01-01
  • 2021-08-13
  • 2017-06-07
  • 2021-03-08
相关资源
最近更新 更多