Формат Время в формате AngularJS

Как правильно отображать дату и время в 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

Ответ 1

v.Dt, скорее всего, не является объектом Date().

См. http://jsfiddle.net/southerd/xG2t8/

но в вашем контроллере:

scope.v.Dt = Date.parse(scope.v.Dt);

Ответ 2

Ваш код должен работать так, как вы его видите эту скрипту.

Вам нужно убедиться, что ваш v.Dt является подходящим Date объектом для его работы.

{{dt | date:'yyyy-MM-dd HH:mm:ss Z'}}

или если dateFormat определяется в области как dateFormat = 'yyyy-MM-dd HH: mm: ss Z':

{{dt | date:dateFormat }}

Ответ 3

Я знаю, что это старый элемент, но подумал, что я бы выбрал еще один вариант для рассмотрения.

Поскольку исходная строка не включает демаркер "T", реализация по умолчанию в Angular не распознает его как дату. Вы можете заставить его использовать новую дату, но это немного боль в массиве. Поскольку вы можете фильтровать каналы вместе, вы можете использовать фильтр для преобразования своего ввода в дату, а затем применить фильтр даты на преобразованную дату. Создайте новый настраиваемый фильтр следующим образом:

app
.filter("asDate", function () {
    return function (input) {
        return new Date(input);
    }
});

Затем в вашей разметке вы можете соединить фильтры вместе:

{{item.myDateTimeString | asDate | date:'shortDate'}}

Ответ 4

вы можете получить фильтр "date" следующим образом:

var today = $filter('date')(new Date(),'yyyy-MM-dd HH:mm:ss Z');

Это даст вам сегодняшнюю дату в нужном формате.

Ответ 5

Вот фильтр, который примет строку даты ИЛИ объект 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' }}

https://gist.github.com/cmmartin/341b017194bac09ffa1a

Ответ 6

Вот несколько популярных примеров:

<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

Ответ 7

Вы видели раздел Написание директив (короткая версия) в документации?

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';
}

Ответ 8

Внутри контроллера формат можно отфильтровать, введя $filter.

var date = $filter('date')(new Date(),'MMM dd, yyyy');

Ответ 9

Просто, если вы хотите выводить как "30 января 2017 года 4:31:20", затем выполните простой шаг

step1- Объявить следующую переменную в контроллере js

$scope.current_time = new Date();

step2- отображение на странице html, например

{{current_time | дата: 'средний'}}

Ответ 10

Вы можете использовать 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 "";
    };
});

Где дата в формате временной метки.

Ответ 11

мы можем отформатировать дату на стороне вида в angular очень просто.... пожалуйста, проверьте приведенный ниже пример:

{{dt | date: "dd-MM-yyyy" }}

Ответ 12

Я бы предложил вам использовать moment.js, он получил хорошую поддержку форматирования даты в соответствии с локалями.

создать фильтр, который внутренне использует метод moment.js для даты форматирования.

Ответ 13

Добавить $filter зависимость в контроллере.

var formatted_datetime = $filter('date')(variable_Containing_time,'yyyy-MM-dd HH:mm:ss Z')