2017-07-11 14 views
1

以下の形式でサーバーから日付を取得しています。anglejsで日付形式が機能していません

「2017-07-10T20:51:13.000Z」。

しかし、「dd/MM/yyyy」形式で日付形式を変更するときは、自動的にもう1日追加されます。

この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="[email protected]" 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月 11日を取得しています7月10日しかし、私の結果です。

答えて

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

私はあなたと同じ問題で苦労していると私は思っています。問題はタイムゾーンです。指定した日付はUTCです(Zに注意してください)。
デフォルトでは、角度ファイラはブラウザのタイムゾーンを使用します。いくつかのオプションがあります。最初はハッキングのビットですが、仕事、およびUTCにレンダリングするためにブラウザを強制的かもしれません:

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

これは日付がUTCに常にあると仮定すると、日付(時間がない部分)をレンダリングするために動作します。常にUTCを使用していることに注意してください。

もっと大きな解決策(私たちが仕事をしているもの)は、必要な日時オブジェクトをより具体的にすることです。 dbから始まりフロントエンドまでの特定の日付のみの値を使用しています。これにより、タイムゾーンの概念が削除されます。これは、標準的な日付オブジェクトをバックエンドまたはフロントエンド(つまり、AngularJS)で使用しないことを意味します。したがって、これを正しく行うには、カスタム入力とカスタム入力を作成する必要があります。

関連する問題