这是羽毛球:http://plnkr.co/edit/c7N78xvGa4WYDehVZjD6?p=preview
<body ng-app="dateInputExample">
<script>
angular.module('dateInputExample', [])
.controller('DateController', ['$scope', function($scope) {
$scope.example = {
value: new Date(2013, 9, 22)
};
}]);
</script>
<form name="myForm" ng-controller="DateController as dateCtrl">
<label for="exampleInput">Pick a date in 2013:</label>
<input type="date" id="exampleInput" name="input" ng-model="example.value"
placeholder="yyyy-MM-dd" min="2013-01-01" max="2013-12-31" required />
<div role="alert">
<span class="error" ng-show="myForm.input.$error.required">
Required!</span>
<span class="error" ng-show="myForm.input.$error.date">
Not a valid date!</span>
</div>
<tt>value = {{example.value | date: "yyyy-MM-dd"}}</tt><br/>
<tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
<tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
<tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
<tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
{{example.value}}
</form>
</body>
</html>
这是输出:
为什么日期值与日期选择器上显示的日期值不同?如何解释这个日期?
"2013-10-21T16:00:00.000Z"
答案 0 :(得分:1)
日期选择器选择您当地时区的日期。也就是说,当选择日期时,它被设置为当地时间的午夜。显示日期时,它以UTC显示(即最后的&#34; Z&#34;表示)。您当地的时区似乎比UTC(俄罗斯?)早8小时,因此您的时间午夜是UTC前一天的16:00。换句话说,他们都是完全相同的时间 - 他们只是在不同的时区表达。
显示日期的toString()
方法(由于您未指定日期应如何显示而隐式调用日期)显示UTC中的日期,其中包含您在那里看到的神秘格式。它被设计为比人类可读的机器可读性更高。要以当地时区显示日期(并采用更好的格式),请使用toDateString()
方法显示日期:
{{example.value.toDateString()}}
现在日期将匹配。
答案 1 :(得分:0)
{{example.value|date:"MM/dd/yyyy"}}