2016-09-29 10 views
0

上記の通貨の全データを変換するにはYYYY-MM-DDフォーマット?私はこの方法で使用しましたが、動作しません。angulajsの日付を含むオブジェクトから日付形式を変換する

$scope.dateDatas = [0:"29-09-2016", 1:"30-09-2016",2:"01-10-2016",3:"02-10-2016",4:"03-10-2016"] 

angular.forEach ($scope.dateDatas, 
      function (value) { 
      var d = $filter('date')(value, 'yyyy-mm-dd'); 
      console.log(d); 
      }); 
+0

日付オブジェクトではないので、データソースに日付が必要です –

+0

'key'、' vaule'ペアを 'dateDatas'配列にどのように置くことができますか? –

+0

@ Angular_10いいえ、ソースにする必要はありませんが、フィルタを使用するために日付に解析する必要があります – charlietfl

答えて

1

これについてどのように:ここで

$scope.dateDatas = ["29-09-2016", "30-09-2016", "01-10-2016", "02-10-2016", "03-10-2016"]; 
$scope.result = []; 

angular.forEach ($scope.dateDatas, function (value) { 
    var splitValue = value.split("-"); 
    var date = new Date(splitValue[2], splitValue[1] - 1, splitValue[0]); 

    var res = $filter('date')(date, 'yyyy-MM-dd'); 
    $scope.result.push(res); 
    console.log(res); 
}); 

が問題です:最初の行で

  1. 、削除、アレイ内の任意のペアがあってはなりません "キー 'を押して、値を保持します。

  2. 注釈として、配列の後にセミコロンを付けることも忘れないでください。

  3. $filter('date')は文字列ではなく日付で動作します。最初の文字列を日付オブジェクトに変換する必要があります。この文字列をDateに変換するコードをhereから取得しました。また、あなたがDateコンストラクタの月が何らかの理由で0ベースであるためDateコンストラクタに渡す前に、1月の値を小さくする必要があることに注意してください(2月などのために1月、1 0を期待):

    var splitValue = value.split("-");
    var date = new Date(splitValue[2], splitValue[1] - 1, splitValue[0]);

  4. 小さなメートルののではなくヶ月の分を表し、あなたにこの結果を与えるため、フィルタパラメータは、代わりに'yyyy-mm-dd'(首都Mさん)の'yyyy-MM-dd'次のようになります。

    ["2016-00-29", "2016-00-30", "2016-00-01", "2016-00-02", "2016-00-03"]

plunkerの完全な例もチェックしてください。

関連する問題