javascript - 为什么日期没有正确生成?

标签 javascript arrays angular date

我正在使用 Angular JS 中的一个函数来生成从今天开始的过去一周的日期。我将这些日期存储在一个数组中,然后使用该数组来填充下拉列表。 以下是我正在使用的代码。

generate() {
    this.date_new = [];
    var date = new Date();
    var date1 = new Date();
    for (var i = 0; i < 7; i++) {
        date.setDate(date1.getDate() - i);
        var a = date.toString();
        var str = this.convert(a);
        this.date_new.push(str);
    }
}

这里的convert是一个函数,用于将日期转换为所需的格式。下面附有生成日期的屏幕截图。

The generated dates

从屏幕截图中可以看出,最后两个日期不正确。有人可以向我解释一下问题是什么吗?

最佳答案

The setDate() method sets the day of the Date object relative to the beginning of the currently set month.

以上来自MDN

您的代码适用于前 5 个日期,但是一旦您使用 -1 修改二月日期,它就会设置相对于当前月份的日期,例如二月。因此,这将变成一月(因为您将日期设置为 -1),下一次迭代中也会发生同样的情况,您将得到十二月。

要轻松修复,您只需在 for 循环的第一行中将 date 变量设置为 new Date() 即可。

关于javascript - 为什么日期没有正确生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54977369/

相关文章:

javascript - 使用 Jquery 单击按钮后在前 5 个元素上添加样式

javascript - 删除 d3 中的特定 svg

angular - 隐藏列 Mat-Table Angular

javascript - $http.post undefined 不是函数

数据属性中的 Javascript 正则表达式

javascript - Js数组检测: number of values from php array found (grabbed from database)

c++ - 数组单元显示错误

php - 为什么 is_array() 返回 false?

javascript - ngIf Angular react 形式组件值

html - 隐藏选择元素的文本部分