AngularJS + Момент + Часовой пояс

Я работаю над проектом Angularjs и пытаюсь сгенерировать даты в соответствии с выбранным пользователем часовым поясом. После долгих исследований я обнаружил угловой момент.

Я пытался добавить moment.js, moment-timezone.js, angular-moment.js

Я добавил:

angular.module('main', [..., 'moment-picker', 'angularMoment']);

Затем я ввел момент в моем сервисе так:

angular.module('main').service('UtilityServ', ['moment', 'CONSTANTS', function (moment, CONSTANTS) {

Но ни одна из следующих строк не работает:

moment().tz()

moment.tz()

В обоих случаях он говорит, что moment.tz не является функцией, тогда как:

moment().format('YYYY-MM-DD HH:MM')

работает отлично

Похоже, angularMoment использует момент, а не момент-часовой пояс

1 ответ

Решение

Вы можете просто сослаться на moment-timezone.js следующим образом:

  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone.min.js"></script>

DEMO

angular.module('ExampleApp', []).
      controller('MainCtrl', function ($scope) {
      console.log(moment.tz().format('YYYY-MM-DD HH:MM'));
  });
body {
      box-sizing: border-box;
      width: 500px;
      height: 100vh;
      min-height: 100vh;
      margin: 0;
      padding: 15px;
    }
    input {
     width: 100%;
    }
<!DOCTYPE html>
<html ng-app="ExampleApp">
<head>
  <title>Datetime range input UI element for AngularJS</title>
  <link rel="stylesheet" type="text/css" href="dist/datetime-range.css">
  <meta name="viewport" content="width=500,user-scalable=0">
</head>
<body ng-controller="MainCtrl">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js" charset="utf-8"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone.min.js"></script>
</body>
</html>

Другие вопросы по тегам