angularjs中的默认日期值为9999/12/31

时间:2016-01-14 14:13:49

标签: angularjs

我想按日期字段值预填充到9999/12/31。我试过以下代码

HTML

<div class="col-md-1">
  <datepicker date-format="yyyy-MM-dd">
      <input
        id="endDate"
        type="date"
        class="form-control"
        ng-model="entity.endDate"
        placeholder="yyyy-MM-dd
        ng-required="true"
        ng-disabled="formName == 'VIEWX'"
      >
  </datepicker>
</div>

控制器

$scope.entity = {
  endDate: new Date(9998, 12, 31)
};

我将预填充值视为&#39; 10000-01-31&#39;

1 个答案:

答案 0 :(得分:1)

Javascript日期可能很愚蠢。 Date对象使用 0-indexed months 。来自documentation(强调我的):

  

注意:如果将Date作为具有多个参数的构造函数调用,如果值大于其逻辑范围(例如,13为月值或70为分钟值),则将调整相邻值。例如。新日期(2013,13,1)相当于新日期(2014,1,1),两者都创建了2014-02-01 的日期(请注意月份为0)

提及

Date.getMonths()方法进一步支持了这一点
  

getMonth()方法根据当地时间返回指定日期的月份,作为从零开始的值(其中零表示一年中的第一个月)。

9999年12月31日的正确日期是

new Date(9999, 11, 31);

Plnkr demo