2016-03-17 1 views
0

меня эту установку в AngularJS

var input = '2015-08-04T06:00:00'; 
var format = 'yyyy MMM dd - HH:mm:ss'; 
return $filter('date')(new Date(input), format); 

Однако результат 2015 Aug 04 - 08:00:00, а не 2015 Aug 04 - 06:00:00, как это может быть?

+2

@Chris Story прав, вы должны попробовать использовать некоторую библиотеку DateTime Javascript, такую ​​как Moment. http://momentjs.com/ –

+1

+1 для momentjs. Существует даже [угловой момент] (https://github.com/urish/angular-moment), который предоставляет директивы. – Lex

ответ

3

Ваша проблема не с AngularJS, это связано с использованием JavaScript новой Date(). Из документации JavaScript на w3schools:

При определении даты, без указания часового пояса, JavaScript будет использовать часовой пояс браузера. Другими словами: если дата/время составляет , созданное в GMT (среднее время по Гринвичу), дата/время будут преобразованы в CDT (Central US Daylight Time), если пользователь просматривает данные из центральной части США.

Что происходит с вами, так это то, что ваше время переводится в часовой пояс вашего браузера и предполагается, что вы устанавливаете время как GMT.

Чтобы подтвердить свою мысль, перейдите на эту страницу тестера на w3schools и введите время из вашего примера, и вы увидите, что отображаемый результат на самом деле отличается.