2017-05-25 51 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