【问题标题】:Angularjs - display current dateAngularjs - 显示当前日期
【发布时间】:2014-05-22 15:36:35
【问题描述】:

我在 angularjs 中有一个视图,我只是想显示当前日期(格式化)。我认为像 <span>{{Date.now() | date:'yyyy-MM-dd'}}</span> 这样的东西应该显示当前日期。

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

你必须先在你的控制器中创建一个日期对象:

控制器:

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

查看:

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

JSFiddle example

Angular Date Filter Ref

【讨论】:

  • hi @sloth 我想使用 cgi 来显示当前系统时间。我怎么可能这样做?或者有可能吗?谢谢
【解决方案2】:

如果您不想在每次打印日期时都将日期对象附加到当前范围,也可以使用过滤器来执行此操作:

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

然后在你看来:

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

【讨论】:

  • 那他不妨做个指令
【解决方案3】:

模板

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

指令

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

因为您无法在模板中直接访问Date 对象(对于内联解决方案),所以我选择了此指令。它还可以让您的控制器保持清洁并且可重复使用。

【讨论】:

    【解决方案4】:

    好吧,你可以用小胡子表情 ({{Date.now() | date:'dd.MM.yyyy HH:mm:ss'}}) 来做到这一点。您只需要将 Date 对象分配给您要评估此表达式的范围。

    这是 jsfiddle 示例:jsfiddle

    但不要指望它会自动更新值。这个值不是由角度观察的,所以每次你想要更新它时都必须触发摘要(例如通过 $interval )......这是浪费资源(并且在文档中也不是“推荐”的)。当然,您可以结合使用指令/控制器来仅处理子范围(它总是小于例如 rootScope 并且摘要会更快)。

    【讨论】:

      【解决方案5】:

      只要我的 2 美分,以防有人偶然发现这个 :)

      我在这里建议的内容与当前答案的结果相同,但是建议按照我在此处提到的方式编写控制器。

      Reference滚动到第一个“Note”(抱歉没有锚点)

      这是推荐的方式:

      控制器:

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

      查看:

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

      【讨论】:

        【解决方案6】:

        您可以在 AngularJS 中使用 moment() 和 format() 函数。

        控制器:

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

        查看:

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

        【讨论】:

          【解决方案7】:
          <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>
          

          【讨论】:

            【解决方案8】:

            这是您的答案示例:http://plnkr.co/edit/MKugkgCSpdZFefSeDRi7?p=preview

            <span>Date Of Birth: {{DateOfBirth | date:"dd-MM-yyyy"}}</span>
            <input type="text" datepicker-popup="dd/MM/yyyy" ng-model="DateOfBirth" class="form-control" />
            

            然后在控制器中:

            $scope.DateOfBirth = new Date();
            

            【讨论】:

              【解决方案9】:

              查看

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

              控制器

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

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

              【讨论】:

                【解决方案10】:

                类似于the one of @Nick G.的解决方案,使用过滤器,但使参数有意义:

                实现一个名为relativedate 的过滤器,它通过给定参数计算相对于当前日期的日期作为差异。因此,(0 | relativedate) 表示今天,(1 | relativedate) 表示明天。

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

                和你的 html:

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

                【讨论】:

                  【解决方案11】:

                  另一种做法是: 在 Controller 中,创建一个变量来保存当前日期,如下所示:

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

                  在 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,我已经更新了我的代码 sn-p。我希望,它现在更具描述性。
                  猜你喜欢
                  • 2015-01-15
                  • 1970-01-01
                  • 2015-12-08
                  • 1970-01-01
                  • 2013-12-29
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多