Angularjs - wyświetla aktualną datę


129

Mam widok w angularjs i po prostu próbuję wyświetlić aktualną datę (sformatowaną). Pomyślałem, że coś takiego <span>{{Date.now() | date:'yyyy-MM-dd'}}</span>powinno wyświetlać aktualną datę.


Byłoby… ale nie wie Date.now().
— putvande

2
Więc najpierw muszę wygenerować zmienną w kontrolerze? Pomyślałem, że coś prostego, jak obecna data, będzie łatwiejsze :)
— Evo_x

1
Date.now()to funkcja nodeJS
— Nay

Odpowiedzi:


231

Najpierw musisz utworzyć obiekt daty w kontrolerze:

kontroler:

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

widok:

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

Przykład JSFiddle

Filtr daty kątowej Nr ref


cześć @sloth Chcę użyć cgi do wyświetlenia aktualnego czasu systemowego. Jak mogę to zrobić? Czy jest to możliwe? Dzięki
— bleyk

44

Możesz to również zrobić za pomocą filtra, jeśli nie chcesz dołączać obiektu daty do bieżącego zakresu za każdym razem, gdy chcesz wydrukować datę:

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

a następnie Twoim zdaniem:

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

5

23

Szablon

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

Dyrektywa

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

Ponieważ nie możesz uzyskać dostępu do Dateobiektu bezpośrednio w szablonie (w przypadku rozwiązania wbudowanego), zdecydowałem się na tę dyrektywę. Utrzymuje również kontrolery w czystości i nadaje się do wielokrotnego użytku.


19

Cóż, możesz to zrobić za pomocą wyrażenia wąsów ( {{Date.now() | date:'dd.MM.yyyy HH:mm:ss'}}). Wystarczy przypisać obiekt Date do zakresu, w którym chcesz ocenić to wyrażenie.

Oto przykład jsfiddle : jsfiddle

Ale nie oczekuj, że automatycznie zaktualizuje wartość. Ta wartość nie jest obserwowana przez kąt, więc musisz wywoływać skrót za każdym razem, gdy chcesz go zaktualizować (na przykład o interwał $) ... co jest marnowaniem zasobów (a także nie jest „zalecane” w dokumentach). Oczywiście możesz użyć kombinacji z dyrektywami / kontrolerami, aby bawić się tylko zakresem podrzędnym (jest zawsze mniejszy niż na przykład rootScope, a skrót będzie szybszy).


9

Tylko moje 2 centy na wypadek, gdyby ktoś się na to natknął :)

To, co tu proponuję, będzie miało taki sam skutek, jak obecna odpowiedź, jednak zaleca się napisanie kontrolera w sposób, o którym tutaj wspomniałem.

Odsyłacz przewiń do pierwszej „notatki” (niestety nie ma kotwicy)

Oto zalecany sposób:

Kontroler:

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

Widok:

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

2

Możesz używać moment()i format()funkcji w AngularJS.

Kontroler:

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

Widok:

<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

Widok

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

Kontroler

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

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

1

Rozwiązanie podobne do tego z @Nick G. przy użyciu filtra, ale parametrowi znaczenie:

Zaimplementuj filtr o nazwie, relativedatektóry oblicza datę względem aktualnej daty przez dany parametr jako diff. W rezultacie (0 | relativedate)oznacza dzisiaj i (1 | relativedate)oznacza jutro.

.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')
  };
}]);

i twój html:

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

1

Innym sposobem jest: W kontrolerze utwórz zmienną, która będzie przechowywać aktualną datę, jak pokazano poniżej:

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

 $scope.myDate = Date.now();

});

W widoku HTML

<!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, zaktualizowałem fragment kodu. Mam nadzieję, że teraz jest bardziej opisowy.
— Sunita
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.