Ответ 1
v.Dt, скорее всего, не является объектом Date().
См. http://jsfiddle.net/southerd/xG2t8/
но в вашем контроллере:
scope.v.Dt = Date.parse(scope.v.Dt);
Как правильно отображать дату и время в AngularJS?
На приведенном ниже рисунке показаны как входные, так и выходные данные, с и без фильтра даты AngularJS:
In: {{v.Dt}}
AngularJS: {{v.Dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
Отпечатки:
In: 2012-10-16T17:57:28.556094Z
AngularJS: 2012-10-16T17:57:28.556094Z
Желаемый формат отображения
2010-10-28 23:40:23 0400
или 2010-10-28 23:40:23 EST
v.Dt, скорее всего, не является объектом Date().
См. http://jsfiddle.net/southerd/xG2t8/
но в вашем контроллере:
scope.v.Dt = Date.parse(scope.v.Dt);
Ваш код должен работать так, как вы его видите эту скрипту.
Вам нужно убедиться, что ваш v.Dt
является подходящим Date объектом для его работы.
{{dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
или если dateFormat определяется в области как dateFormat = 'yyyy-MM-dd HH: mm: ss Z':
{{dt | date:dateFormat }}
Я знаю, что это старый элемент, но подумал, что я бы выбрал еще один вариант для рассмотрения.
Поскольку исходная строка не включает демаркер "T", реализация по умолчанию в Angular не распознает его как дату. Вы можете заставить его использовать новую дату, но это немного боль в массиве. Поскольку вы можете фильтровать каналы вместе, вы можете использовать фильтр для преобразования своего ввода в дату, а затем применить фильтр даты на преобразованную дату. Создайте новый настраиваемый фильтр следующим образом:
app
.filter("asDate", function () {
return function (input) {
return new Date(input);
}
});
Затем в вашей разметке вы можете соединить фильтры вместе:
{{item.myDateTimeString | asDate | date:'shortDate'}}
вы можете получить фильтр "date" следующим образом:
var today = $filter('date')(new Date(),'yyyy-MM-dd HH:mm:ss Z');
Это даст вам сегодняшнюю дату в нужном формате.
Вот фильтр, который примет строку даты ИЛИ объект javascript Date(). Он использует Moment.js и может применять любую функцию преобразования Moment.js, такую как популярный 'fromNow'
angular.module('myModule').filter('moment', function () {
return function (input, momentFn /*, param1, param2, ...param n */) {
var args = Array.prototype.slice.call(arguments, 2),
momentObj = moment(input);
return momentObj[momentFn].apply(momentObj, args);
};
});
Итак...
{{ anyDateObjectOrString | moment: 'format': 'MMM DD, YYYY' }}
отобразится 11 ноября 2014 г.
{{ anyDateObjectOrString | moment: 'fromNow' }}
отобразится 10 минут назад
Если вам нужно вызвать несколько функций момента, вы можете их связать. Это преобразуется в UTC, а затем форматирует...
{{ someDate | moment: 'utc' | moment: 'format': 'MMM DD, YYYY' }}
Вот несколько популярных примеров:
<div>{{myDate | date:'M/d/yyyy'}}</div>
7/4/2014
<div>{{myDate | date:'yyyy-MM-dd'}}</div>
2014-07-04
<div>{{myDate | date:'M/d/yyyy HH:mm:ss'}}</div>
7/4/2014 12:01:59
Вы видели раздел Написание директив (короткая версия) в документации?
HTML
<div ng-controller="Ctrl2">
Date format: <input ng-model="format"> <hr/>
Current time is: <span my-current-time="format"></span>
</div>
JS
function Ctrl2($scope) {
$scope.format = 'M/d/yy h:mm:ss a';
}
Внутри контроллера формат можно отфильтровать, введя $filter.
var date = $filter('date')(new Date(),'MMM dd, yyyy');
Просто, если вы хотите выводить как "30 января 2017 года 4:31:20", затем выполните простой шаг
step1- Объявить следующую переменную в контроллере js
$scope.current_time = new Date();
step2- отображение на странице html, например
{{current_time | дата: 'средний'}}
Вы можете использовать momentjs
для реализации фильтра даты и времени в angularjs.
Например:
angular.module('myApp')
.filter('formatDateTime', function ($filter) {
return function (date, format) {
if (date) {
return moment(Number(date)).format(format || "DD/MM/YYYY h:mm A");
}
else
return "";
};
});
Где дата в формате временной метки.
мы можем отформатировать дату на стороне вида в angular очень просто.... пожалуйста, проверьте приведенный ниже пример:
{{dt | date: "dd-MM-yyyy" }}
Я бы предложил вам использовать moment.js, он получил хорошую поддержку форматирования даты в соответствии с локалями.
создать фильтр, который внутренне использует метод moment.js для даты форматирования.
Добавить $filter
зависимость в контроллере.
var formatted_datetime = $filter('date')(variable_Containing_time,'yyyy-MM-dd HH:mm:ss Z')