Ich möchte das Datum als mm/dd/yyyy
formatieren. Ich habe Folgendes versucht und nichts davon funktioniert für mich. Kann mir jemand dabei helfen?
referenz: Datum
<input ui-date ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />
<input type="date" ng-model="valueofdate" />
Angular.js hat einen eingebauten Datumsfilter.
// 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
Sie können die unterstützten Datumsformate sehen in der Quelle für den Datumsfilter .
edit :
Wenn Sie versuchen, das richtige Format für den Datepicker zu ermitteln (nicht klar, ob Sie den Datepicker verwenden oder nur dessen Formatierer verwenden möchten), finden Sie hier die unterstützten Formatzeichenfolgen: https: //api.jqueryui). com/datepicker /
Wenn Sie kein Eingabefeld haben, sondern nur ein String-Datum mit einer korrekten Formatierung anzeigen möchten, können Sie einfach Folgendes auswählen:
<label ng-bind="formatDate(date) | date:'MM/dd/yyyy'"></label>
und in der js datei verwenden:
// @Function
// Description : Triggered while displaying expiry date
$scope.formatDate = function(date){
var dateOut = new Date(date);
return dateOut;
};
Dadurch wird das Datum in der Zeichenfolge in ein neues Datumsobjekt in Javascript konvertiert und das Datum im Format MM/TT/JJJJ angezeigt.
Ausgabe: 15.12.2014
Bearbeiten
Wenn Sie ein String-Datum im Format "2014-12-19 20:00:00" verwenden (übergeben von einem PHP-Backend), sollten Sie den Code in das ändern Eins in: https://stackoverflow.com/a/27616348/1904479
Weiteres hinzufügen
In Javascript können Sie den Code wie folgt einstellen:
$scope.eqpCustFields[i].Value = $filter('date')(new Date(dateValue),'yyyy-MM-dd');
falls Sie bereits ein Datum bei sich haben, können Sie den folgenden Code verwenden, um das aktuelle Systemdatum abzurufen:
$scope.eqpCustFields[i].Value = $filter('date')(new Date(),'yyyy-MM-dd');
Weitere Informationen zu Datumsformaten finden Sie unter: https://docs.angularjs.org/api/ng/filter/date
Ich benutze dies und es funktioniert gut.
{{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
Dies ist nicht wirklich genau das, wonach Sie fragen - aber Sie könnten versuchen, ein Datumseingabefeld in HTML zu erstellen, etwa so:
<input type="date" ng-model="myDate" />
Dann, um dies auf der Seite zu drucken, würden Sie verwenden:
<span ng-bind="convertToDate(myDate) | date:'medium'"></span>
Schließlich habe ich in meinem Controller eine Methode deklariert, die aus dem Eingabewert ein Datum erstellt (das in chrome anscheinend einen Tag später analysiert wird):
$scope.convertToDate = function (stringDate){
var dateOut = new Date(stringDate);
dateOut.setDate(dateOut.getDate() + 1);
return dateOut;
};
Also da hast du es. Um zu sehen, wie das Ganze funktioniert, schauen Sie sich den folgenden Plunker an: http://plnkr.co/edit/8MVoXNaIDW59kQnfpaWW?p=preview . Viel Glück!
Das wird funktionieren:
{{ oD.OrderDate.replace('/Date(','').replace(')/','') | date:"MM/dd/yyyy" }}
HINWEIS: Sobald Sie diese ersetzen, werden die verbleibenden Datums-/Millis-Werte in das angegebene Format konvertiert.
Ich benutze Filter
.filter('toDate', function() {
return function(items) {
return new Date(items);
};
});
dann
{{'2018-05-06 09:04:13' | toDate | date:'dd/MM/yyyy hh:mm'}}
Übergeben Sie einfach das UTC-Datumsformat von Ihrem serverseitigen Code an den Client
und benutze die folgende Syntax -
{{dateUTCField +'Z' | date : 'mm/dd/yyyy'}}
e.g. dateUTCField = '2018-01-09T10:02:32.273' then it display like 01/09/2018
var app=angular.module('myApp',[]);
app.controller('myController',function($scope){
$scope.names = ['1288323623006','1388323623006'];
});
Hier lautet der Name des Controllers "myController" und der Name der App "myApp".
<div ng-app="myApp" ng-controller="myController">
<ul>
<li ng-repeat="x in names">
{{x | date:'mm-dd-yyyy'}}
</li>
</ul>
</div>
Das Ergebnis sieht folgendermaßen aus: - * 29.10.2010 * 03.01.2013
Nachdem ich mir alle oben genannten Lösungen angesehen hatte, war das Folgende die schnellste Lösung für mich. Wenn Sie eckiges Material verwenden:
<md-datepicker ng-model="member.reg_date" md-placeholder="Enter date"></md-datepicker>
So legen Sie das Format fest:
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');
};
});
Bearbeiten: Sie müssen auch das parseDate für die Eingabe eines Datums festlegen (von dieser Antwort Ändern Sie das Format von md-datepicker in Angular Material )
$mdDateLocaleProvider.parseDate = function(dateString) {
var m = moment(dateString, 'DD/MM/YYYY', true);
return m.isValid() ? m.toDate() : new Date(NaN);
};
Ich hatte das gleiche Problem und dachte, wie die obigen Kommentare, dass es eine native Methode in JavaScript geben muss. Das Ding ist new Date(valueofdate)
gibt ein Date-Objekt zurück.
Aber check in http://www.w3schools.com/js/js_date_formats.asp , der Teil, in dem die führende Null steht. Ein Datum aus einem String, beispielsweise ein Echo aus PHP, muss wie folgt lauten:
$valueofdate = date('Y-n-j',strtotime('theStringFromQuery'));
Dies übergibt einen String, zum Beispiel: '1999-3-3'
und JavaScript analysiert ein Objekt mit dem richtigen Format mit
$scope.valueofdate = new Date(valueofdate);
<input ui-date ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />
<input type="date" ng-model="valueofdate" />
Link zu PHP für Datumsformate: http://www.w3schools.com/php/func_date_date_format.asp .
ng-bind="reviewData.dateValue.replace('/Date(','').replace(')/','') | date:'MM/dd/yyyy'"
Verwenden Sie dies sollte gut funktionieren. :) Die Felder "reviewData" und "dateValue" können geändert werden, je nachdem, ob der Parameter "rest" gleich bleibt
{{convertToDate | Datum: Datumsformat}}
$ rootScope.dateFormat = 'MM/dd/yyyy';
Ok das Problem scheint aus dieser Zeile zu kommen:
https://github.com/angular-ui/ui-date/blob/master/src/date.js#L106 .
Tatsächlich ist diese Zeile die Bindung mit der jQuery-Benutzeroberfläche, in die das Datenformat eingefügt werden soll.
Wie Sie in var opts
sehen können, gibt es keine Eigenschaft dateFormat
mit dem Wert von ng-date-format, den Sie sich vorstellen können.
Auf jeden Fall hat die Direktive eine Konstante mit dem Namen uiDateConfig
, um Eigenschaften zu opts
hinzuzufügen.
Die flexible Lösung (empfohlen):
Aus hier können Sie ersehen, dass Sie einige Optionen einfügen können, die eine Controller-Variable mit den Optionen jquery ui in die Direktive einfügen.
<input ui-date="dateOptions" ui-date-format="mm/dd/yyyy" ng-model="valueofdate" />
myAppModule.controller('MyController', function($scope) {
$scope.dateOptions = {
dateFormat: "dd-M-yy"
};
});
Die fest codierte Lösung:
Wenn Sie diesen Vorgang nicht ständig wiederholen möchten, ändern Sie den Wert von uiDateConfig
in date.js in:
.constant('uiDateConfig', { dateFormat: "dd-M-yy" })