设置的日期不正确

时间:2017-05-16 11:05:54

标签: angular

我的html页面上有以下字段: enter image description here

当我点击保存时,我会参考每个字段并创建一个新日期,如下所示:

var dob = new Date(this.editProfileForm.value['year'], this.editProfileForm.value['month'], this.editProfileForm.value['day']

显示时:

1989年1月23日星期一00:00:00 GMT + 1100

你可以看到的是不正确的,1月份怎么样?我的选择列表月份的html标记为:

 <select name="month" id="month" class="form-control" formControlName="month">
    <option value="" selected>Please Select</option>
    <option value=01>January</option>
    <option value=02>February</option>
    <option value=03>March</option>
    <option value=04>April</option>
    <option value=05>May</option>
    <option value=06>June</option>
    <option value=07>July</option>
    <option value=08>August</option>
    <option value=09>September</option>
    <option value=10>October</option>
    <option value=11>November</option>
    <option value=12>December</option>
</select>

当我将此更改为从1月份的00开始,一直到11 12月时,它可以正常工作......但这对我来说似乎不正确?

但它也为年度做同样的事情......这是动态构建的:

<option _ngcontent-c2="" value="1999" ng-reflect-value="1999">1999</option>
<option _ngcontent-c2="" value="1998" ng-reflect-value="1998">1998</option>
<option _ngcontent-c2="" value="1997" ng-reflect-value="1997">1997</option>

一直到1939年......

有人可以了解为什么这个月和年会发生这种情况吗?

我发现每次保存时它都会减少1天。

2 个答案:

答案 0 :(得分:0)

问题在于您的value属性数月。实例化Date()月的时间是从0到11计算的。所以1月是0等。在你的情况下,12的值会跳到第一个月。

因此代码中的更正是:

<select name="month" id="month" class="form-control" formControlName="month">
    <option value="" selected>Please Select</option>
    <option value=0>January</option>
    <option value=1>February</option>
    <option value=2>March</option>
    <option value=3>April</option>
    <option value=4>May</option>
    <option value=5>June</option>
    <option value=6>July</option>
    <option value=7>August</option>
    <option value=8>September</option>
    <option value=9>October</option>
    <option value=10>November</option>
    <option value=11>December</option>
</select>

答案 1 :(得分:0)

因为月份参数是零索引,即它从0开始计数而不是1,通过添加一个额外的月份(即12而不是11),你将转到第二年的第一个月,这就是为什么它从1988年开始增加到1989年。

进一步阅读:Zero-based month numbering