来自md-datepicker的值的日期格式

时间:2016-01-08 16:34:58

标签: javascript angularjs datepicker angular-material

如何以特定格式格式化md-datepicker的模型变量。我尝试了$mdDateLocaleProvider的配置,但它只是格式化了日期选择器的显示值,而不是模型值。请查看此codepen或以下代码:

HTML:

<div ng-app="MyApp" ng-controller="AppCtrl">
  <md-content>
    <md-datepicker ng-model="myDate" md-placeholder="Enter date"></md-datepicker>
  </md-content>
  <p>Date not formatted:</p>
  {{myDate}}
</div>

JS:

angular.module('MyApp')
    .controller('AppCtrl', function($scope) {
      $scope.myDate = new Date();
    })

.config(function($mdDateLocaleProvider) {
  $mdDateLocaleProvider.formatDate = function(date) {
    return moment(date).format('YYYY-MM-DD');
  };
});

3 个答案:

答案 0 :(得分:1)

您应该使用角度'日期'过滤器

{{myDate | date:'yyyy-MM-dd'}}

有关更多格式和其他信息,请参阅:https://docs.angularjs.org/api/ng/filter/date

答案 1 :(得分:0)

var dateFormat = function(date) {

    var date = date.getDate();
    var month = date.getMonth();
    var year = date.getFullYear();
    var formattedDate = (date < 10 ?  ('0' + date) : date) + '/' + (month < 10 ?  ('0' + month) : month) + '/' + year;
}

或者

return date.getDate() + "/" +date.getMonth()+1 + "/" + date.getFullYear();

将给你2016年1月8日。 (你需要+1 getMonth()因为1月是0)。这是你在找什么?

编辑:功能

答案 2 :(得分:0)

模型对象始终是一个javascript日期对象,您只能在渲染时更改表示(例如,像您一样使用矩形,或者已经提到的角度日期过滤器)。

也许你应该在javascript和JSON中阅读日期格式:The “right” JSON date format

但是,您可以在将日期对象发送到服务器/后端之前对其进行转换。 如果您将REST与$resource$http一起使用,则可以使用angular-http-transform-date之类的内容,或者通过向$httpProvider添加请求转换器来自行执行此操作。 有一个blog post显示了如何为响应执行此操作,但同样的机制适用于请求。