【问题标题】:How to group by a date with a timestamp? (AngularJS)如何按带有时间戳的日期分组? (AngularJS)
【发布时间】:2019-11-19 20:40:15
【问题描述】:

我有以下代码:

<div ng-repeat="(key, value) in history | groupBy:'date'">
  <div>{{key}}</div>
  <div ng-repeat="item in value">
    {{item}}
  </div>
</div>

我想以这种格式展示我的历史:

2015-10-10
item 1
item 2
item 3

2015-10-11
item 4
item 5

2015-10-12
item 6
item 7

此代码工作正常,但date 属性是一个时间戳。每个项目都有小时和秒的差异。重要的是,项目按天分组,没有时间。

【问题讨论】:

  • 你找到解决办法了吗?

标签: javascript angularjs timestamp ng-repeat


【解决方案1】:

根据angular-filterauthor 制作的answer,我找到了一个使用momentjs 的不错的解决方案:

html

<div ng-repeat="(key, value) in history | map: toDay | groupBy:'date'">
    <div>{{key}}</div>
    <div ng-repeat="item in value">
        {{item}}
    </div>
</div>

控制器

$scope.toDay = toDay;

function toDay( history ) {
    history.day = moment( history.date ).format( "L" );
    return history;
}

假设您有一个有效的 javascript Date 对象而不使用 momentjs 您的函数将是相似的:

function toDay( history ) {
    history.date = history.date.toLocaleDateString();
    return history;
};

【讨论】:

  • 我将如何在 javascript 端执行此操作?
【解决方案2】:

作为后端开发人员,我被困在这个问题上几个小时,但我意识到你可以使用 time ago 它与 moment 相同,但它可以退出 ckly 格式化你的时间戳。

例如 groupBy | datesubmitted : timeago 然后它将按小时、天等分组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2014-10-20
    • 1970-01-01
    • 2013-12-26
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多