2017-02-14 49 views
0

生年月日に基づいて年齢を計算しようとしていますが、何らかの理由で正常に動作しています。angle:生年月日の年齢を計算する

ここには角度コードがあります。

データはhttpリクエストから送信されています。

$scope.dob = data.dob; 

サンプルデータ - 02-01-1990。 (dd-mm-yyyy)。

$scope.calculateAge = function calculateAge(birthday) { // birthday is a date 
    var ageDifMs = Date.now() - birthday.getTime(); 
    var ageDate = new Date(ageDifMs); // miliseconds from epoch 
    return Math.abs(ageDate.getUTCFullYear() - 1970); 
} 

これは私が使用している方法です。

{{ calculateAge(dob) }} 

助言してください。あなたは今年のミリ秒数に基づいて、かなり簡単に違いを計算することができるように

+0

するvar D =新しい日付( "1990年2月1日"):

あなたは$のhttpリクエストにより$タイムアウトを交換し、これに似た何かを行うことができます解析する。あなたはこの部分を過ぎていますか?この質問から私には分かりません。 –

+0

「それは失敗しています」という意味は何ですか?エラーが出ていますか?あなたは間違った結果を得ていますか?何か他に起こっている?あなたの質問は完全に明確ではありません。 – Claies

+0

birthDateが "dd-mm-yyyy"形式であり、Date()クラスがこの形式を認識しないため、目的の結果が得られていないか、作成されていません。したがって、日付の差は期待される結果を出力しません。すなわち、birthday.getTime()は、入力された日付を1990年2月1日(mm-dd-yyyy)の形式で評価します。共通の基本形式で日付を変換するには、moment.jsを使用してみてください。 – RRM

答えて

1

ageDifMsは、差のミリ秒です:

return Math.floor(ageDifMs/1000/60/60/24/365); 

また、あなたが02-01-1990形式を使用している場合、あなたはこれを与えることができませんnew Date。代わりに、moment JavaScriptを使用して、提供されたフォーマットから簡単に日付を作成し、任意の指標(年を含む)を使用して2つの日付の差を計算することをおすすめします。

0

年齢を計算する機能が正しく動作しているようです。しない

angular.module('webapp', []) 
 
     .controller('dummyCtrl', ['$scope', '$timeout', function($scope, $timeout) { 
 
      $scope.age = 'NOT DEFINED'; 
 
      
 
      // This simulates the synchronicity of the http request 
 
      $timeout(function() { 
 
       $scope.calculateAge(new Date(2000, 10, 10)); 
 
      }, 1000); 
 
      
 
      $scope.calculateAge = function calculateAge(birthday) { 
 
       console.log(birthday); 
 
       // birthday is a date 
 
       var ageDifMs = Date.now() - birthday.getTime(); 
 
       var ageDate = new Date(ageDifMs); // miliseconds from epoch 
 
       $scope.age = Math.abs(ageDate.getUTCFullYear() - 1970); 
 
      }; 
 
     }]);
<!DOCTYPE html> 
 
    <html ng-app="webapp"> 
 
     <head> 
 
      <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script> 
 
     </head> 
 
     <body ng-app="webapp"> 
 
      <div ng-controller="dummyCtrl"> 
 
       <span ng-bind="age"></span> 
 
      </div> 
 
     </body> 
 
    </html>

関連する問題