【问题标题】:Angular js : convert date to another timezoneAngular js:将日期转换为另一个时区
【发布时间】:2017-02-08 16:41:20
【问题描述】:

我必须根据记录的用户时区将我的日期转换为不同的时区

我试过了

$scope.currentDate = Date.now();
$scope.tz = 'America/New_York';

鉴于我这样称呼{{currentDate | date:'h:mm a' : t}}

但它不起作用。,..我怎么能做到这一点?

【问题讨论】:

    标签: angularjs date timezone converter


    【解决方案1】:

    利用Moment timezone JS

    var app = angular.module('app', []);
    
    app.controller('mainCtrl', function($scope) {
      var now = moment(new Date());
      $scope.currentDate = now.tz('America/New_York').format('hh:mm a');
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.4/moment-timezone-with-data-2010-2020.min.js"></script>
    
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
    <div ng-app='app'>
      <div ng-controller='mainCtrl'>
        <h4>{{ currentDate }}
    </h4>
      </div>
    </div>

    【讨论】:

    • 我只将时区作为字符串而不是偏移量
    【解决方案2】:

    很简单

    在 HTML 模板绑定中

    {{ date_expression | date : format : timezone}}
    

    在 JavaScript 中

    $filter('date')(date, format, timezone)
    

    【讨论】:

    • {{currentDate | date:'h:mm a' : 'America/New_York'}} 不工作..它只显示当地时间
    【解决方案3】:

    这样使用:

    {{currentDate | date:'h:mm a' : '+500'}}
    

    否则制作一个过滤器来格式化日期,它将使用时刻以任何格式和时区格式化,如下所示:

    inputFormat = "YYYY-MM-DD'T'HH:mm:ssZ"
    moment(input, inputFormat).format(outputFormat)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      • 2021-01-23
      • 2012-04-22
      相关资源
      最近更新 更多