Как отформатировать дату в angularjs
Я хочу отформатировать дату как mm/dd/yyyy
. Я попробовал следующее, и ничто из этого не работает для меня.
Может ли кто-нибудь помочь мне с этим?
ссылка: ui-date
<input ui-date ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />
<input type="date" ng-model="valueofdate" />
Ответы
Ответ 1
Angular.js имеет встроенный фильтр даты.
демо
// in your controller:
$scope.date = '20140313T00:00:00';
// in your view, date property, filtered with date filter and format 'MM/dd/yyyy'
<p ng-bind="date | date:'MM/dd/yyyy'"></p>
// produces
03/13/2014
Вы можете видеть поддерживаемые форматы дат в источнике фильтра даты.
изменить:
Если вы пытаетесь получить правильный формат в datepicker (неясный, если вы используете datepicker или просто пытаетесь использовать его formatter), эти поддерживаемые строки формата находятся здесь: https://api.jqueryui.com/datepicker/
Ответ 2
Если у вас нет поля ввода, а просто хотите отобразить строковую дату с правильным форматированием, вы можете просто перейти к:
<label ng-bind="formatDate(date) | date:'MM/dd/yyyy'"></label>
и в файле js используйте:
// @Function
// Description : Triggered while displaying expiry date
$scope.formatDate = function(date){
var dateOut = new Date(date);
return dateOut;
};
Это преобразует дату в строке в новый объект даты в javascript и будет отображать дату в формате MM/dd/yyyy.
Выходные данные: 15.12.2014
Изменить
Если вы используете строковую дату в формате "2014-12-19 20:00:00" в строковом формате (переданном из бэкэнда PHP), вам следует изменить код на следующий: fooobar.com/questions/57868/...
Добавляем дальше
Из javascript вы можете установить код как:
$scope.eqpCustFields[i].Value = $filter('date')(new Date(dateValue),'yyyy-MM-dd');
в том случае, если у вас уже есть дата, иначе вы можете использовать следующий код для получения текущей системной даты:
$scope.eqpCustFields[i].Value = $filter('date')(new Date(),'yyyy-MM-dd');
Подробнее о форматах даты см. в разделе: https://docs.angularjs.org/api/ng/filter/date
Ответ 3
Я использую это, и он работает нормально.
{{1288323623006 | date:'medium'}}: Oct 29, 2010 9:10:23 AM
{{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}: 2010-10-29 09:10:23 +0530
{{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}: 10/29/2010 @ 9:10AM
{{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}: 10/29/2010 at 9:10AM
Ответ 4
Это не совсем то, о чем вы просите, но вы могли бы попытаться создать поле ввода даты в html, например:
<input type="date" ng-model="myDate" />
Затем, чтобы напечатать это на странице, вы должны использовать:
<span ng-bind="convertToDate(myDate) | date:'medium'"></span>
Наконец, в моем контроллере я объявил метод, который создает дату из входного значения (которое в хроме, по-видимому, разобрано 1 день):
$scope.convertToDate = function (stringDate){
var dateOut = new Date(stringDate);
dateOut.setDate(dateOut.getDate() + 1);
return dateOut;
};
Итак, у вас это есть. Чтобы увидеть, как все работает, см. Следующий плункер: http://plnkr.co/edit/8MVoXNaIDW59kQnfpaWW?p=preview. Самое удачное!
Ответ 5
Это будет работать:
{{ oD.OrderDate.replace('/Date(','').replace(')/','') | date:"MM/dd/yyyy" }}
ПРИМЕЧАНИЕ: после того, как вы замените их, оставшаяся дата/миллис будет преобразована в заданный foramt.
Ответ 6
см. angular date
API: AngularJS API: дата
Angular фильтр - date
:
Использование:
{{ date_expression | date [: 'format'] [: 'timezone' ] }}
Exampe:
Код:
<span>{{ '1288323623006' | date:'MM/dd/yyyy' }}</span>
Результат:
10/29/2010
Ответ 7
Я использую фильтр
.filter('toDate', function() {
return function(items) {
return new Date(items);
};
});
тогда
{{'2018-05-06 09:04:13' | toDate | date:'dd/MM/yyyy hh:mm'}}
Ответ 8
Просто передайте формат даты UTC из кода на стороне сервера на сторону клиента
и используйте приведенный ниже синтаксис -
{{dateUTCField +'Z' | date : 'mm/dd/yyyy'}}
e.g. dateUTCField = '2018-01-09T10:02:32.273' then it display like 01/09/2018
Ответ 9
Посмотрев на все вышеупомянутые решения, для меня было самым быстрым решением. Если вы используете angular -material:
<md-datepicker ng-model="member.reg_date" md-placeholder="Enter date"></md-datepicker>
Чтобы установить формат:
app.config(function($mdDateLocaleProvider) {
$mdDateLocaleProvider.formatDate = function(date) {
// Requires Moment.js OR enter your own formatting code here....
return moment(date).format('DD-MM-YYYY');
};
});
Изменить: вам также нужно установить parseDate для ввода даты (из этого ответа Изменить формат md-datepicker в Angular Материал)
$mdDateLocaleProvider.parseDate = function(dateString) {
var m = moment(dateString, 'DD/MM/YYYY', true);
return m.isValid() ? m.toDate() : new Date(NaN);
};
Ответ 10
var app=angular.module('myApp',[]);
app.controller('myController',function($scope){
$scope.names = ['1288323623006','1388323623006'];
});
Здесь имя контроллера - "myController", а имя приложения - "myApp".
<div ng-app="myApp" ng-controller="myController">
<ul>
<li ng-repeat="x in names">
{{x | date:'mm-dd-yyyy'}}
</li>
</ul>
</div>
Результат будет выглядеть так: -
* 10-29-2010
* 01-03-2013
Ответ 11
Хорошо, проблема, похоже, исходит из этой строки:
https://github.com/angular-ui/ui-date/blob/master/src/date.js#L106.
Фактически эта строка является связыванием с пользовательским интерфейсом jQuery, который должен быть местом для ввода формата данных.
Как вы можете видеть в var opts
нет свойства dateFormat
со значением из ng-date-format, как вы могли бы узнать.
В любом случае директива имеет константу, называемую uiDateConfig
, чтобы добавить свойства к opts
.
Гибкое решение (рекомендуется):
Из здесь вы можете видеть, что вы можете вставить некоторые опции, вводящие в директиву переменную контроллера с параметрами jquery ui.
<input ui-date="dateOptions" ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />
myAppModule.controller('MyController', function($scope) {
$scope.dateOptions = {
dateFormat: "dd-M-yy"
};
});
Жестко закодированное решение:
Если вы не хотите повторять эту процедуру, все время меняйте значение uiDateConfig
в date.js на:
.constant('uiDateConfig', { dateFormat: "dd-M-yy" })
Ответ 12
У меня была такая же проблема, и, как и выше, подумал, что в JavaScript должен быть собственный метод. Вещь new Date(valueofdate)
возвращает объект Date.
Но, зайдите в http://www.w3schools.com/js/js_date_formats.asp, часть, указывающая начало ноль. Дата из строки, например эха из PHP, должна быть такой:
$valueofdate = date('Y-n-j',strtotime('theStringFromQuery'));
Это передаст строку, например: '1999-3-3'
, и JavaScript выполнит синтаксический анализ объекта с правильным форматом с помощью
$scope.valueofdate = new Date(valueofdate);
<input ui-date ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />
<input type="date" ng-model="valueofdate" />
Ссылка на PHP для форматов даты: http://www.w3schools.com/php/func_date_date_format.asp.
Ответ 13
ng-bind="reviewData.dateValue.replace('/Date(','').replace(')/','') | date:'MM/dd/yyyy'"
Использовать это должно хорошо.:)
Поля the reviewData и dateValue могут быть изменены в соответствии с вашим остатком параметра можно оставить таким же
Ответ 14
{{convertToDate | date: dateformat}}
$ rootScope.dateFormat = 'MM/dd/yyyy';
Ответ 15
// $scope.dateField="value" in ctrl
<div ng-bind="dateField | date:'MM/dd/yyyy'"></div>