2016-01-14 24 views
-1

我想按日期字段值預填充到9999/12/31。我曾嘗試下面的代碼在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) 
}; 

我得到的預充的值是 '10000-01-31'

+0

爲什麼?這種行爲有什麼用處?除非你的目標是惹惱你的用戶,否則不要這樣做。如果用戶需要填寫與當前日期接近的日期,則在所有其他情況下預先填寫當前日期,並將其保留。 – Pjetr

+0

這是一個奇怪的代碼行爲。我不知道爲什麼它得到了投票。 Pjetr - 我不知道用戶喜歡這種方式。 – SGN

回答

1

的Javascript日期可能是愚蠢的。 Date對象使用0索引的月份。從documentation(重點煤礦):

注:圖中日期被稱爲具有一個以上參數的構造,如果值低於其邏輯範圍更大(如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