我使用的是Angularjs Material datepicker扩展名
这是一个简单的用法示例:
<md-datepicker ng-model="$ctrl.date"></md-datepicker>
在我的app config中:
$mdDateLocaleProvider.formatDate = function (date) {
if (!date) {
return '';
}
return moment(date).format('YYYY-MM-DD');
};
这是我面临的一个问题 - 当通过日历选择日期时,它会返回正确的值,
但是当我输入一个确切的日期,例如
2012-12-12
它给了我一天假的价值
Tue Dec 11 2012 00:00:00 GMT-0500 (EST)
P.S。这是我发现有这样一个问题的Codeopen
答案 0 :(得分:1)
这是javascript中的一个已知错误
例:
new Date ('2012/03/21');
- &gt; Wed Mar 21 2012 00:00:00 GMT-0400 (Eastern Daylight Time)
new Date ('2012-03-21');
- &gt; Tue Mar 20 2012 20:00:00 GMT-0400 (Eastern Daylight Time)
我能给你的最佳建议是将-
更改为/
试试这个
<强> HTML 强>
<div ng-app="MyApp" ng-controller="AppCtrl">
<md-content>
<md-datepicker ng-model="myDate" md-placeholder="Enter date" ng-change="change(myDate)"></md-datepicker>
</md-content>
</div>
<强> JS 强>
angular.module('MyApp')
.controller('AppCtrl', function($scope) {
$scope.myDate = new Date();
$scope.minDate = new Date(
$scope.myDate.getFullYear(),
$scope.myDate.getMonth() - 2,
$scope.myDate.getDate());
$scope.maxDate = new Date(
$scope.myDate.getFullYear(),
$scope.myDate.getMonth() + 2,
$scope.myDate.getDate());
console.log($scope.myDate.toLocaleDateString(), $scope.myDate.toUTCString());
$scope.change = function(data) {
console.log($scope.myDate.toLocaleDateString());
console.log( $scope.myDate.toUTCString());
}
})
.config(function($mdDateLocaleProvider) {
$mdDateLocaleProvider.formatDate = function(date) {
return moment(date).format('YYYY/MM/DD');
};
});