В ответ от json я получаю часовой пояс UTC. Мне нужно преобразовать его в местное время.convert UTC to local time using angularjs
<span class="text-muted">{{trans.txnDate}}</span>
может кто-нибудь помочь в этом ???
Спасибо ..
В ответ от json я получаю часовой пояс UTC. Мне нужно преобразовать его в местное время.convert UTC to local time using angularjs
<span class="text-muted">{{trans.txnDate}}</span>
может кто-нибудь помочь в этом ???
Спасибо ..
EDIT (2 января 2017): Пожалуйста, обратитесь @ ответ Джейсона, это лучше, чем эта, так как он использует пользовательский фильтр, чтобы установить формат дату - это более Угловой способ сделать это ,
Мой первоначальный ответ и редактирование:
Вы можете использовать date
фильтр для форматирования даты:
<span class="text-muted">{{trans.txnDate | date:'yyyy-MM-dd HH:mm:ss Z' }}</span>
Этот выход будет:
2010-10-29 09:10:23 +0530
(при условии, что trans.txnDate = 1288323623006;
)
See this documentation of date
in angularjs.org. Это очень много примеров, которые очень полезны!
EDIT:
В ответ на ваш комментарий, используйте следующий, чтобы получить дату как 17 oct 2014
:
<span class="text-muted">{{trans.txnDate | date:'dd MMM yyyy' | lowercase }}</span>
Проверьте ссылку документации о которой я говорил выше.
EDIT2:
В ответ на ваш другой комментарий, используйте следующий код. Проблема в том, что строка, которую вы получаете, неправильно отформатирована, поэтому объект Date
не может ее распознать. Я отформатировал его в контроллере, а затем перешел к представлению.
function MyCtrl($scope) {
var dateString = "2014:10:17T18:30:00Z";
dateString = dateString.replace(/:/, '-'); // replaces first ":" character
dateString = dateString.replace(/:/, '-'); // replaces second ":" character
$scope.date = new Date(dateString);
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-controller="MyCtrl">
{{date | date:'dd MMM yyyy' | lowercase }}
</div>
The JS код для замены может быть улучшена путем поиска более разумный способ заменить первые 2 вхождения :
характера.
Мне просто пришлось решить эту проблему, а также даты, исходящие из .NET Web API в формате «yyyy-MM-ddTHH: mm: ss» (например, 2016-02-23T00: 11: 31) без " Z 'для указания времени UTC.
Я создал этот фильтр, который расширяет фильтр угловой даты и гарантирует, что суффикс часовой пояс включен для времени UTC.
UTC Локальный Фильтр:
(function() {
'use strict';
angular
.module('app')
.filter('utcToLocal', utcToLocal);
function utcToLocal($filter) {
return function (utcDateString, format) {
if (!utcDateString) {
return;
}
// append 'Z' to the date string to indicate UTC time if the timezone isn't already specified
if (utcDateString.indexOf('Z') === -1 && utcDateString.indexOf('+') === -1) {
utcDateString += 'Z';
}
return $filter('date')(utcDateString, format);
};
}
})();
Пример:
{{product.CreatedDate | utcToLocal:"dd.MM.yyyy"}}
Я была такая же проблема. Фильтр даты AngularJs не определяет, что строка - это формат UTC, но объект JavaScript Date. Таким образом, я создал простую функцию в контроллере:
$scope.dateOf = function(utcDateStr) {
return new Date(utcDateStr);
}
А затем использовали что-то вроде:
{{ dateOf(trans.txnDate) | date: 'yyyy-MM-dd HH:mm:ss Z' }}
Он отображает дату/время в местном часовом поясе
Можете ли вы показать, как вы получите его от JSON? это в миллисекундах или строке? – Mihai
это строковый формат pattern = "yyyy: MM: dd'T'HH: mm: ss'Z '" – chandru
Если я делаю что-то со временем и часами, я всегда использую http://momentjs.com/ и http://momentjs.com/timezone/. Эта библиотека очень удобна. –