Angularjs - zeigt das aktuelle Datum an


128

Ich habe eine Ansicht in anglejs und versuche nur, das aktuelle Datum anzuzeigen (formatiert). Ich dachte, so etwas <span>{{Date.now() | date:'yyyy-MM-dd'}}</span>sollte das aktuelle Datum anzeigen.


Es würde ... aber es weiß es nicht Date.now().
Putvande

2
Also muss ich zuerst die Variable im Controller generieren? Ich dachte, etwas Einfaches wie das aktuelle Datum wäre einfacher :)
Evo_x

1
Date.now()ist NodeJS-Funktion
Nein,

Antworten:


229

Sie müssen zuerst ein Datumsobjekt in Ihrem Controller erstellen:

Regler:

function Ctrl($scope)
{
    $scope.date = new Date();
}

Aussicht:

<div ng-app ng-controller="Ctrl">
    {{date | date:'yyyy-MM-dd'}}
</div>

JSFiddle-Beispiel

Winkeldatumsfilter Art.-Nr.


hi @sloth Ich möchte cgi zum Anzeigen der aktuellen Systemzeit verwenden. Wie kann ich das möglicherweise tun oder ist es möglich? Danke
bleyk

44

Sie können dies auch mit einem Filter tun, wenn Sie nicht jedes Mal, wenn Sie das Datum drucken möchten, ein Datumsobjekt an den aktuellen Bereich anhängen müssen:

.filter('currentdate',['$filter',  function($filter) {
    return function() {
        return $filter('date')(new Date(), 'yyyy-MM-dd');
    };
}])

und dann aus Ihrer Sicht:

<div ng-app="myApp">
    <div>{{'' | currentdate}}</div>
</div>

5
Er kann dann auch eine Anweisung machen
arg20

23

Vorlage

<span date-now="MM/dd/yyyy"></span>

Richtlinie

.directive('dateNow', ['$filter', function($filter) {
  return {
    link: function( $scope, $element, $attrs) {
      $element.text($filter('date')(new Date(), $attrs.dateNow));
    }
  };
}])

Da Sie Datein einer Vorlage (für eine Inline-Lösung) nicht direkt auf das Objekt zugreifen können, habe ich mich für diese Richtlinie entschieden. Es hält auch Ihre Controller sauber und ist wiederverwendbar.


19

Nun, Sie können es mit Schnurrbart Ausdruck ( {{Date.now() | date:'dd.MM.yyyy HH:mm:ss'}}) tun . Sie müssen das Date-Objekt nur dem Bereich zuweisen, in dem Sie diesen Ausdruck auswerten möchten.

Hier ist ein Beispiel für jsfiddle: jsfiddle

Erwarten Sie jedoch nicht, dass der Wert automatisch aktualisiert wird. Dieser Wert wird nicht von Angular überwacht, daher müssen Sie jedes Mal einen Digest auslösen, wenn Sie ihn aktualisieren möchten (z. B. nach $ -Intervall). Dies ist eine Verschwendung von Ressourcen (und in Dokumenten auch nicht "empfohlen"). Natürlich können Sie die Kombination mit Direktiven / Controllern verwenden, um nur mit dem untergeordneten Bereich herumzuspielen (es ist immer kleiner als zum Beispiel rootScope und Digest ist schneller).


9

Nur meine 2 Cent für den Fall, dass jemand darauf stößt :)

Was ich hier vorschlage, hat das gleiche Ergebnis wie die aktuelle Antwort. Es wurde jedoch empfohlen, Ihren Controller so zu schreiben, wie ich es hier erwähnt habe.

Referenz scrollen Sie zum ersten "Hinweis" (Entschuldigung, es gibt keinen Anker)

Hier ist der empfohlene Weg:

Regler:

var app = angular.module('myApp', []);   
app.controller( 'MyCtrl', ['$scope', function($scope) {
    $scope.date = new Date();
}]);

Aussicht:

<div ng-app="myApp">
  <div ng-controller="MyCtrl">
    {{date | date:'yyyy-MM-dd'}}
  </div>
</div>

2

Sie können moment()und verwendenformat() Funktionen in AngularJS verwenden.

Regler:

var app = angular.module('demoApp', []);   
app.controller( 'demoCtrl', ['$scope', '$moment' function($scope , $moment) {
$scope.date = $moment().format('MM/DD/YYYY');
}]);

Aussicht:

<div ng-app="demoApp">
  <div ng-controller="demoCtrl">
    {{date}}
  </div>
</div>

2
<script type="text/javascript">
var app = angular.module('sampleapp', [])
app.controller('samplecontrol', function ($scope) {
   var today = new Date();
   console.log($scope.cdate);
   var date = today.getDate();
   var month = today.getMonth();
   var year = today.getFullYear();
   var current_date = date+'/'+month+'/'+year;
   console.log(current_date);
});
</script>


1

Aussicht

<div ng-app="myapp">
{{AssignedDate.now() | date:'yyyy-MM-dd HH:mm:ss'}}
</div>

Regler

var app = angle.module ('myapp', [])

app.run(function($rootScope){
    $rootScope.AssignedDate = Date;
})

1

Eine Lösung ähnlich der von @Nick G. unter Verwendung von Filter, aber machen Sie den Parameter aussagekräftig:

Implementieren Sie einen Filter namens, relativedateder das Datum relativ zum aktuellen Datum anhand des angegebenen Parameters als diff berechnet. Infolgedessen (0 | relativedate)bedeutet heute und (1 | relativedate)morgen.

.filter('relativedate', ['$filter', function ($filter) {
  return function (rel, format) {
    let date = new Date();
    date.setDate(date.getDate() + rel);
    return $filter('date')(date, format || 'yyyy-MM-dd')
  };
}]);

und dein HTML:

<div ng-app="myApp">
    <div>Yesterday: {{-1 | relativedate}}</div>
    <div>Today: {{0 | relativedate}}</div>
    <div>Tomorrow: {{1 | relativedate}}</div>
</div>

1

Eine andere Möglichkeit ist: Erstellen Sie in Controller eine Variable, die das aktuelle Datum enthält, wie unten gezeigt:

var eventsApp = angular.module("eventsApp", []);
eventsApp.controller("EventController", function EventController($scope) 
{

 $scope.myDate = Date.now();

});

In der HTML-Ansicht

<!DOCTYPE html>
<html ng-app="eventsApp">
<head>
    <meta charset="utf-8" />
   <title></title>
   <script src="lib/angular/angular.js"></script>
</head>
<body>
<div ng-controller="EventController">
<span>{{myDate | date : 'yyyy-MM-dd'}}</span>
</div>
</body>
</html>

@Billa, ich habe mein Code-Snippet aktualisiert. Ich hoffe, es ist jetzt aussagekräftiger.
Sunita
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.