当我点击保存时,我会参考每个字段并创建一个新日期,如下所示:
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天。
答案 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年。