Angularjs - güncel tarihi göster


128

Angularjs'de bir görünüm aldım ve sadece geçerli tarihi (formatlanmış) görüntülemeye çalışıyorum. Böyle bir şeyin <span>{{Date.now() | date:'yyyy-MM-dd'}}</span>güncel tarihi göstermesi gerektiğini düşündüm .


Olurdu .. ama bilmiyor Date.now().
— putvande

2
Yani önce denetleyicide değişkeni mi oluşturmalıyım? Şu anki tarih gibi basit bir şeyin daha kolay olacağını düşündüm :)
— Evo_x

1
Date.now()nodeJS işlevi
— Nay

Yanıtlar:


229

Önce denetleyicinizde bir tarih nesnesi oluşturmanız gerekir:

kontrol:

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

görünüm:

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

JSFiddle örneği

Açısal Tarih Filtresi Ref


hi @sloth Geçerli sistem saatini görüntülemek için cgi'yi kullanmak istiyorum. Ben muhtemelen bunu ya mümkün sayesinde olduğunu nasıl?
— bleyk

44

Tarihi yazdırmak istediğiniz her seferinde geçerli kapsama bir tarih nesnesi eklemek istemiyorsanız, bunu bir filtre ile de yapabilirsiniz:

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

ve sonra sizin görüşünüzde:

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

5
O zaman bir yönerge de yapabilir
— arg20

23

şablon

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

Direktif

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

Erişemediğiniz Çünkü Date(bir satır içi çözüm için) bir şablonda direcly nesneyi, bu Yönerge için opteted. Ayrıca Denetleyicilerinizi temiz tutar ve yeniden kullanılabilir.


19

Bunu bıyık ifadesi ( {{Date.now() | date:'dd.MM.yyyy HH:mm:ss'}}) ile yapabilirsiniz. Bu ifadeyi değerlendirmek istediğiniz kapsama Date nesnesini atamanız yeterlidir.

İşte jsfiddle örneği: jsfiddle

Ancak değeri otomatik olarak güncellemesini beklemeyin. Bu değer açısal olarak izlenmez, bu nedenle her güncellenmesini istediğinizde (örneğin $ aralığı ile) özeti tetiklemeniz gerekir ... bu da kaynak israfıdır (ve ayrıca belgelerde "tavsiye edilmez"). Elbette, yalnızca alt kapsamla uğraşmak için yönergeler / denetleyicilerle kombinasyon kullanabilirsiniz (her zaman örneğin rootScope'tan daha küçüktür ve özet daha hızlı olacaktır).


9

Birinin buna rastlaması durumunda sadece 2 sentim :)

Burada önerdiğim şey, mevcut cevapla aynı sonuca sahip olacak, ancak kontrol cihazınızı burada bahsettiğim şekilde yazmanız önerildi.

İlk "Not" a referans kaydırın (Maalesef, bağlantısı yok)

İşte önerilen yol:

Denetleyici:

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

Görünüm:

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

2

AngularJS'de moment()ve format()işlevlerini kullanabilirsiniz .

Denetleyici:

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

Görünüm:

<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

Görünüm

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

kontrolör

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

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

1

Filtre kullanarak @Nick G'ye benzer bir çözüm , ancak parametreyi anlamlı hale getirin:

relativedateDiff olarak verilen parametreye göre tarihi geçerli tarihe göre hesaplayan adlı bir filtre uygulayın . Sonuç olarak (0 | relativedate)bugün (1 | relativedate)demektir ve yarın demektir.

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

ve html'niz:

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

1

Yapmanın başka bir yolu ise: Controller'da, aşağıda gösterildiği gibi geçerli tarihi tutmak için bir değişken oluşturun:

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

 $scope.myDate = Date.now();

});

HTML görünümünde,

<!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, kod parçamı güncelledim. Umarım şimdi daha açıklayıcıdır.
— Sunita
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.