繁体   English   中英

如何以角度显示每小时前的数据

[英]how to display the data per hour ago in angular

这是代码:

data = [
    {
        'name' : 'sample'
        'date' : '2020-02-18 13:50:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 13:20:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 13:12:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 13:13:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 12:50:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 11:50:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 07:50:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 01:50:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 01:30:01'
    },
    {
        'name' : 'sample'
        'date' : '2020-02-18 01:20:01'
    },
]

预期输出:

 data = [
        {
            'name' : 'sample'
            'date' : '2020-02-18 13:50:01'
        },
        {
            'name' : 'sample'
            'date' : '2020-02-18 12:50:01'
        },
        {
            'name' : 'sample'
            'date' : '2020-02-18 11:50:01'
        },
        {
            'name' : 'sample'
            'date' : '2020-02-18 07:50:01'
        },
    ]

我想在这里做的是显示每小时的数据。 数据将像这样过滤。

data = [
            {
                'name' : 'sample'
                'date' : '2020-02-18 13:50:01'
            },
            {
                'name' : 'sample'
                'date' : '2020-02-18 12:50:01'
            },
            {
                'name' : 'sample'
                'date' : '2020-02-18 11:50:01'
            },
            {
                'name' : 'sample'
                'date' : '2020-02-18 07:50:01'
            },
        ]

它不会在一小时前获取其他数据。 如果数据是最后 30 分钟,则不会获取/显示。 数据应该是最后一个小时前,数据应该是每小时前。 它应该是动态的。 因为如果有一个新数据是日期:2020-02-18 14:00:01,那么每小时前:

2020-02-18 14:00:01,

2020-02-18 13:00:01,

2020-02-18 12:00:01 等...

这是代码: https : //stackblitz.com/edit/angular-dnbses?file=src/app/app.component.ts

如果要按yearmonthdayhour分组:

const result = data.reduce((a, { name, date }) => {
    let currentDate = new Date(date);
    let dateHour = currentDate.getFullYear() + '/' + currentDate.getMonth()  
        + '/' +  currentDate.getDate()  + '/' +  currentDate.getHours();
    a[dateHour] = a[dateHour] || {name, date};
    return a;
}, {})

一个例子:

 let data = [ { 'name' : 'sample', 'date' : '2020-02-18 13:50:01' }, { 'name' : 'sample', 'date' : '2020-02-18 13:20:01' }, { 'name' : 'sample', 'date' : '2020-02-18 13:12:01' }, { 'name' : 'sample', 'date' : '2020-02-18 13:13:01' }, { 'name' : 'sample', 'date' : '2020-02-18 12:50:01' }, { 'name' : 'sample', 'date' : '2020-02-18 11:50:01' }, { 'name' : 'sample', 'date' : '2020-02-18 07:50:01' }, { 'name' : 'sample', 'date' : '2020-02-18 01:50:01' }, { 'name' : 'sample', 'date' : '2020-02-18 01:30:01' }, { 'name' : 'sample', 'date' : '2020-02-18 01:20:01' }, ] const result = data.reduce((a, { name, date }) => { let currentDate = new Date(date); let dateHour = currentDate.getFullYear() + '/' + currentDate.getMonth() + '/' + currentDate.getDate() + '/' + currentDate.getHours(); a[dateHour] = a[dateHour] || {name, date}; return a; }, {}) console.log(Object.values(result));

在这里,我创建了一个GetDataForHour(dataArray, dateToCompare)函数,这可能就是答案。 它过滤dataArray并仅返回具有相同分钟和秒数的dateToCompare之前的数组实体

https://stackblitz.com/edit/angular-rzzkfq

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM