具有角度范围的 HTML5 输入日期格式

Posted

技术标签:

【中文标题】具有角度范围的 HTML5 输入日期格式【英文标题】:HTML5 input date format with angular scope 【发布时间】:2017-10-26 01:51:44 【问题描述】:

我有一个 html 5 input type="date"

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

然后在我的角度控制器中,我正在分配值

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

现在这将给出 HTML5 默认日期格式 yyyy-MM-dd

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

    我无法在我的 HTML 中将 &lt;input type="date"&gt; 更改为 &lt;input type="text"。如果我更改,dateformat 将正常工作

    然后我将输入日期更改为在控制器中输入文本

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

    这不起作用。

基本上,我想在控制器中将日期格式更改为dd/MM/yyyy,而不更改 HTML。

实现这一目标的所有可能方法是什么?

【问题讨论】:

您要使用moment吗? 是的,当然.. 【参考方案1】:

我知道的最好方法是使用momentjs。我已经将它与 angular 1.x.x 一起使用,没有任何问题。它很容易使用,看看这个。您可以添加以下行:

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

这应该可以解决您的问题,

【讨论】:

是的..有什么简单的方法可以使用 moment js 来解决我的问题吗? Error: [ngModel:datefmt] Expected "2017-04-23T00:00:00.000Z"` 成为一个日期`我得到这个错误......我必须输入新的日期(日期)吗? @Arun,看看这个帖子:***.com/questions/30537886/… 看来这个问题已经有了答案【参考方案2】:

对于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,因为它是一个专家库,在玩弄日期/时间和不同时区时。

【讨论】:

$filter 在我的情况下不起作用,正如我上面提到的。也无法通过 momentjs 更改格式 您使用的是哪个版本的 Angular.. 这在 1.3 以上应该可以正常工作 我使用的是 1.3.8

以上是关于具有角度范围的 HTML5 输入日期格式的主要内容,如果未能解决你的问题,请参考以下文章

用于格式化输入框以获取日期 mm/dd/yyyy 的 HTML5 模式?

如何以 HTML5 输入类型日期格式(dd/mm/yyyy)显示猫鼬日期,

如何将 HTML5 输入日期转换为我喜欢的某种格式? [复制]

如何更改html5中自动日期选择器的显示格式

html 5日期格式[重复]

具有特殊模式的日期格式[重复]