1. ホーム
  2. angularjs

AngularJSの日付フィルタをUTCの日付で使用する

2023-10-16 16:54:12

質問

ミリ秒単位でUTCの日付があり、それをAngularの日付フィルターに渡して人為的にフォーマットしています。

{{someDate | date:'d MMMM yyyy'}}

素晴らしい、ただし someDate がUTCで、日付フィルターがローカルタイムとみなすことです。

どうすればAngularに someDate がUTCであることをAngularに伝えるには?

ありがとうございます。

どのように解決するのですか?

類似の質問 ここに

回答を再投稿し、マージを提案します。

出力 UTC はいくつかの混乱の原因になっているようです。 moment.js .

ここから借用 答え を使用すると、moment.jsなしでこのようなことを行うことができます(つまり、UTCコンストラクタで日付を作成する変換関数を使用します)。

コントローラ

var app1 = angular.module('app1',[]);

app1.controller('ctrl',['$scope',function($scope){

  var toUTCDate = function(date){
    var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),  date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
    return _utc;
  };

  var millisToUTCDate = function(millis){
    return toUTCDate(new Date(millis));
  };

    $scope.toUTCDate = toUTCDate;
    $scope.millisToUTCDate = millisToUTCDate;

  }]);

テンプレート

<html ng-app="app1">

  <head>
    <script data-require="angular.js@*" data-semver="1.2.12" src="http://code.angularjs.org/1.2.12/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <div ng-controller="ctrl">
      <div>
      utc {{millisToUTCDate(1400167800) | date:'dd-M-yyyy H:mm'}}
      </div>
      <div>
      local {{1400167800 | date:'dd-M-yyyy H:mm'}}
      </div>
    </div>
  </body>

</html>

ここで プランカー で遊んでみてください。

参照 この この .

また、この方法では、Angularの日付フィルタの'Z'を使用すると、ローカルのタイムゾーンのオフセットが表示されるようなので、注意してください。