代码之家  ›  专栏  ›  技术社区  ›  HC1122

getDate返回错误值

  •  0
  • HC1122  · 技术社区  · 7 年前

    我试图设置一个4天的日期范围(从:今天-2,到:今天+2)。 今天,31号。八月我在我的代码中发现了一个bug,上面写着 Invalid date . 我要这样改变日期,如果我 console.log() 上面写着 -1 .

    任何帮助都将不胜感激。

    date: Date = new Date();
    defaultDay: string = ("0" + (this.date.getDate() - 2)).slice(-2)
    

    P.S:我查看了moment.JS库,但目前我没有那么多时间来将整个项目更改为它。

    3 回复  |  直到 7 年前
        1
  •  2
  •   31piy    7 年前

    你在做基本的算术。从1减去2将得到-1。您可以尝试先设置日期,然后从日期对象中获取日期。

    原因是 setDate() 设置参数不在范围内(小于或等于0)时的相对日期。

    let start = new Date();
    let end = new Date();
    start.setDate(start.getDate() - 2);
    end.setDate(end.getDate() + 2);
    console.log(start.getDate(), end.getDate());
        2
  •  1
  •   taburetkin    7 年前

    您可以使用date api来避免问题。 下面是一个例子

    let date = new Date();
    date.setDate(date.getDate() - 2);
    console.log(("0" + date.getDate()).slice(-2));

    但你必须记住,如果你不想修改日期本身,那么你必须克隆它

        3
  •  0
  •   Sandip Nirmal    7 年前

    你总是可以用@31piy建议的方式来做。但是如果你用 MomentJS .

    你可以很容易地做到

    const today = moment()
    const two_days_after_today = moment().add(2, 'day')
    const two_days_before_today = moment().subtract(2, 'day')
    
    推荐文章