Угловое шоу неверное время с неизвестным часовым поясом

0

flight.departure_at - это формат UTC 2016-05-04T19:00:00.000Z

Когда я показываю это выражение на странице,

Формат полностью не соответствует ожиданиям.

Почему выходят 12:00? Как так?

Я также хочу знать, как можно сохранить весь формат времени в формате UTC по всему миру, не добавляя везде. Это сделает весь App уязвимым

код

Departure_time: {{flight.departure_at}} ||| {{flight.departure_at | date: 'HH:mm'}}

вывод

Departure_time: 2016-05-04T19:00:00.000Z ||| 12:00
  • 0
    Это может быть полезно для вас. stackoverflow.com/questions/21841413/...
  • 0
    @Danieboy ты спас меня !! спасибо ~
Теги:

3 ответа

0

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

Вы должны хранить все время в качестве UTC в бэкэнд, а затем по интерфейсу вы можете установить часовой пояс пользователя во всем мире как

app.constant('angularMomentConfig', {
  'timezone' : <user timezone> 
});

Показывать время UTC теперь на интерфейсе, не беспокоясь о часовом поясе (убедитесь, что все переменные являются либо moment либо объектом Date):

<td ng-bind="flight.departure_at| amDateFormat:'HH:mm'"></td>
0

Как указано в другой теме о персонализации часовых поясов для пользователя - я нашел, что это очень полезно при работе с часовыми поясами в Angular. (qaru.site/questions/310503/...)

module.config(['$provide', function($provide) {
var DEFAULT_TIMEZONE = 'GMT';

$provide.decorator('dateFilter', ['$delegate', '$injector', function($delegate, $injector) {
    var oldDelegate = $delegate;

    var standardDateFilterInterceptor = function(date, format, timezone) {
        if(angular.isUndefined(timezone)) {
            timezone = DEFAULT_TIMEZONE;
        }
    return oldDelegate.apply(this, [date, format, timezone]);
    };

    return standardDateFilterInterceptor;
    }]);
}]);
0

Этот стандарт называется ISO-8601, а формат: YYYY-MM-DDTHH:mm:ss.sssZ

'T' - это просто разделитель между датой и временем в формате ISO-8601.

'Z' - это нулевой часовой пояс (вы получаете 12:00, потому что он конвертируется в ваш часовой пояс)

мы можем использовать такой синтаксис,

var date = new Date('2016-05-04T19:00:00.000Z');
console.log(date.getUTCHours()); // Hours - 19
console.log(date.getUTCMinutes()); //0
console.log(date.getUTCSeconds());// 0


console.log(Date.parse(date));
console.log(new Date(Date.parse(date))); 

ИЛИ

Date.parse(DATE) для получения времени в стандартном формате времени

универсальное глобальное время

Ещё вопросы

Сообщество Overcoder
Наверх
Меню