Am-время-назад с часовым поясом

Я пытаюсь отобразить время назад в приложении angular.js с угловым моментом, моментом и часовым поясом момента. У меня все работает, но для кого-то в Испании время на 6 часов меньше. Что составляет 6 часов разницы во времени от того места, где я живу. Я хочу, чтобы прошлое было единым для каждого человека в мире. Когда я меняю часовой пояс, похоже, он ничего не делает, и я не смог найти никакой документации о том, как добавить часовые пояса. К сожалению, все время в базе данных настроено на часовой пояс серверов. вот моя попытка

вид.html:

<table class="table">
    <tbody>
        <tr ng-repeat="d in data">
            <td><span am-time-ago="d.date"></span></td>
        </tr>
    </tbody>
</table>

приложение.js:

var arcs = angular.module('arcs', ['ui.router', 'ngMaterial', 'ngMdIcons', 'angularMoment']);

$.getJSON('bower_components/moment-timezone/data/packed/latest.json', function(data) {
    moment.tz.add(data['zones']);
    arcs.constant('angularMomentConfig', {timezone: 'Europe/Amsterdam'});
});

индекс.html:

...
  <script src="bower_components/moment/moment.js"></script>
  <script src="bower_components/angular-moment/angular-moment.min.js"></script>
  <script src="bower_components/moment-timezone/moment-timezone.js"></script>
  <script src="bower_components/moment-timezone/moment-timezone-utils.js"></script>
...

person lreynolds18    schedule 22.09.2015    source источник
comment
Как выглядит дата из базы данных? У него есть часовой пояс? Формат может быть ГГГГ-ММ-ДДЧЧ:ii:ssZZZ, где ZZZ — смещение часового пояса (+0600). Если ваши даты не содержат этой информации, момент не будет знать, что нужно преобразовать их в местный часовой пояс.   -  person Sergiu Paraschiv    schedule 22.09.2015
comment
Это выглядит так 2015-09-21 15:36:15, так что ГГГГ-ММ-ДД ЧЧ:ii:ss. Проблема в том, что я думаю, что мне придется изменить много кода, если я добавлю часовой пояс/переключатель к эпохе. Существует еще одно приложение cakephp, которое использует ту же базу данных, и в этом приложении дата генерируется автоматически при создании модели.   -  person lreynolds18    schedule 22.09.2015
comment
Ну, если вы уверены, что все они являются временем сервера, и вы знаете часовой пояс сервера, то вы можете просто добавить смещение часового пояса, прежде чем передавать их в момент.   -  person Sergiu Paraschiv    schedule 22.09.2015


Ответы (1)


Почему вы не храните время эпохи в своей базе данных? Таким образом, момент будет корректировать все времена для правильного часового пояса. Используйте moment().valueOf(), чтобы сделать временную метку события. В директиве вы можете использовать что-то вроде этого: $(elm[0]).html(moment(epochTime).fromNow());

person Aneesh    schedule 22.09.2015