【问题标题】:Date format is not working in angularjs日期格式在 angularjs 中不起作用
【发布时间】:2017-07-11 11:46:19
【问题描述】:

我正在以下列格式从服务器获取日期。

“2017-07-10T20:51:13.000Z”。

但是当我要更改“dd/MM/yyyy”格式的日期格式时,它会自动增加一天。

请检查这个 plunkr。

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>

我的实际日期是 7 月 10 日,但我的结果是 7 月 11 日 请帮助我如何解决这个问题。

【问题讨论】:

    标签: javascript angularjs date


    【解决方案1】:
    //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 }}
    

    【讨论】:

      【解决方案2】:

      我相信我们正在与您在我的工作中遇到同样的问题。问题是时区。您指定的日期是 UTC(注意 Z)。
      但默认情况下,角度文件管理器使用浏览器的时区。你有几个选择。第一个有点小技巧,但可能会起作用,并强制浏览器以 UTC 呈现:

      {{ $scope.date | datetime | 'UTC'}}
      

      这适用于呈现日期(无时间部分),假设日期始终为 UTC。请注意您始终使用 UTC。

      更大的解决方案(我们正在研究的解决方案)是对所需的日期时间对象更加具体。我们现在使用从 db 一直到前端的特定日期值。这消除了时区的概念。这意味着我们不再在后端或前端(即 AngularJS)中使用标准日期对象。因此,您需要创建自定义过滤器以及自定义输入才能正确执行此操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多