2017-05-25 71 views
4

我有一個HTML 5 input type="date"HTML5輸入日期格式與角度範圍

<input type="date" required ng-model="nm.pick" id="dpicker "> 

然後在我的角度控制,我分配值

nm.pick = $filter("date")(Date.now(), 'dd/MM/yyyy'); 

現在這會給yyyy-MM-dd HTML5默認的日期格式。

但我要的日期格式 - dd/MM/yyyy

  1. 在我的HTML,我不能改變<input type="date"><input type="text"。如果我改變,日期格式將正常工作
  2. 然後我改變輸入日期輸入文本在控制器

    $("#dpicker").attr("type", "text"); 
    nm.pick = $filter("date")(Date.now(), 'dd/MM/yyyy'); 
    

    這是行不通的。

基本上我想改變控制器中的dateformat到dd/MM/yyyy而不改變HTML。

什麼都是可能的方式來實現這一目標?

+0

您想使用時刻嗎? – Jenny

+0

是的.. – Arun

回答

4

,我知道最好的方法是使用momentjs。我已經使用它與角度1.x.x沒有問題。這很容易使用,檢查了這一點。您可以添加以下行:

nm.pick = moment(nm.pick).format('DD-MM-YYYY'); 

這應該解決您的問題,

+0

是啊..任何簡短的方式來使用我的問題的時刻js? – Arun

+0

'錯誤:[ngModel:datefmt]預計'「2017-04-23T00:00:00.000Z」'是一個日期'這個錯誤我越來越......我必須把新的日期(日期)? – Arun

+0

@Arun,期待通過此職位:https://stackoverflow.com/questions/30537886/error-ngmodeldatefmt-expected-2015-05-29t190616-693209z-to-be-a-date-a它看起來像這個問題有已經有答案 –

3

對於type="date"結合

var app = angular.module("MyApp", []).controller("MyCtrl", function($scope, $filter) { 
 
    $scope.nm = {}; 
 
    $scope.nm.pick = new Date($filter('date')(new Date(), "yyyy-MM-dd")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 

 

 
<body ng-app="MyApp" ng-controller="MyCtrl"> 
 
    <input type="date" required ng-model="nm.pick" id="dpicker "> 
 
</body>

閱讀其他的答案,我會勸告相同與moment.js一起去,因爲它是一個專家庫時玩弄日期/時間和差異不同時區。

+0

$ filter在我的情況下不起作用,正如我上面提到的。無法通過momentjs更改格式 – Arun

+0

您正在使用哪個版本的角度..這應該在1.3以上工作正常 – Sajal

+0

我正在使用1.3.8 – Arun