我从服务器获取以下格式的日期。
" 2017-07-10T20:51:13.000Z&#34 ;.
但是当我要更改" dd / MM / yyyy"中的日期格式时格式它会自动添加一天。
请检查这个plunkr。
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.date = '2017-07-10T20:51:13.000Z';
});

<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.2.x" src="http://code.angularjs.org/1.2.14/angular.js" data-semver="1.2.14"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<p ng-bind="date | date:'MM/dd/yyyy'"></p>
</body>
</html>
&#13;
我的实际日期是 7月10日但我的结果是 7月11日 请帮助我如何解决这个问题。
答案 0 :(得分:2)
//add custom filter
.filter('datetime', function($filter){
return function(input){
if(input == null){ return ""; }
var _date = $filter('date')(new Date(input),'MM/dd/yyyy');
return _date.toUpperCase();
};
});
//html
{{ $scope.date | datetime }}
答案 1 :(得分:1)
我相信我们正在努力解决同样的问题。问题是时区。您指定的日期是UTC(请注意Z
)
但默认情况下,角度文件管理器使用浏览器的时区。你有几个选择。第一个是hack但可能有效,并强制浏览器以UTC格式呈现:
{{ $scope.date | datetime | 'UTC'}}
这将用于呈现日期(无时间部分),假设日期始终为UTC。请注意,您始终使用UTC。
更大的解决方案(我们正在开展工作的解决方案)是更具体地说明所需的日期时间对象。我们现在使用从db一直到前端的特定日期值。这消除了时区的概念。这意味着我们不再在后端或前端使用标准日期对象(即AngularJS)。因此,您需要创建自定义过滤器以及自定义输入才能正确执行此操作。