【问题标题】:Format time in angular js filter在角度 js 过滤器中格式化时间
【发布时间】:2015-09-08 10:24:24
【问题描述】:

如何重新格式化时间 06:31:04 以仅显示 hh:mm - 06:31

试过

$scope.date = '06:31:04';

<p ng-bind="date | date:'HH:mm'"></p>

但时间没有格式化

我该怎么做呢,谢谢

【问题讨论】:

    标签: javascript angularjs date time filter


    【解决方案1】:

    最好的解决办法是写一个过滤器

    angular.module('foo', [])
    .filter('formatTime', function ($filter) {
    return function (time, format) {
        var parts = time.split(':');
        var date = new Date(0, 0, 0, parts[0], parts[1], parts[2]);
        return $filter('date')(date, format || 'h:mm');
    };
    });
    
    
    
    
    {{ '06:31:04' | formatTime }}
    

    【讨论】:

    • 这对我来说很完美,但在return $filter('date')(date, 'h:mm') 我转向return $filter('date')(date, 'h:mm a')
    【解决方案2】:

    你可以使用下面的简单例子:

    $scope.date=new Date();
    

    现在在我们拥有的 html 中:

        <h2>
            {{ today| date:'hh:mm'  }}
        </h2>
    

    【讨论】:

      【解决方案3】:

      请参阅documentation

      <p ng-bind="date | date:"hh:mm"}}></p>
      

      此外,我认为您的日期格式是错误的。因为

      JavaScript Date 实例 [...] 表示 时间。日期对象基于时间值,该时间值是 自 1970 年 1 月 1 日 UTC 以来的毫秒数。 (source)

      示例:1288323623006。因此过滤器无法识别您的格式。 试试:

      $scope.date = new Date();
      

      如果要将给定格式的字符串转换为日期,请尝试:

      var dateElements = "06:31:04".split(':');
      var date = new Date();
      date.setHours(time[0]);
      date.setMinutes(time[1]);
      $scope.date = date;
      

      然后你可以用过滤器格式化它。

      【讨论】:

      • 已应用于我的代码 $scope.date = '06:31:04';

        仍然得到 '06:31:04'
      • 谢谢,是的,它适用于新日期。但我有这种格式的输出 06:31:04,有没有办法重新格式化?
      猜你喜欢
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2016-09-23
      • 1970-01-01
      相关资源
      最近更新 更多