按分钟数过滤数据VueJs

时间:2019-09-29 03:47:32

标签: javascript datetime vue.js time filter

我的VueJs页面中有一个数据表,并通过ajax请求获取其数据。返回数据是这样的

{
    name: "Test Name",
    created_at: "2019-06-14 07:31:15"
}

我有一些按钮,应该使用以下规则过滤数据:

Created data within the last 5 mins
Created data within the last 15 mins
Created data within the last 30 mins

鉴于我的created_at该怎么做?我有这个当前功能

computed: {
    filterData() {
        return this.customers.filter(item => item.created_at.includes(new Date().getDay()+1));
    }
}

数据this.customers是我来自aj​​ax请求的数据。

我只是从这里filter response data date wise vue引用它。基于此,我希望该数据将被1天前的数据过滤。但这对我也不起作用。也许是因为我的日期是日期时间而不是日期?

1 个答案:

答案 0 :(得分:0)

如果您的日期格式默认为JS Date函数可解析,则可以尝试以下代码。两个日期之间的减号(-)将使差异以毫秒为单位。除以60 * 1000可得到以分钟为单位的差异。

a = [{
    name: "Test Name",
    created_at: "2019-09-29 10:00:15"
},
{
    name: "Test Name",
    created_at: "2019-09-29 10:21:15"
},
{
    name: "Test Name",
    created_at: "2019-09-29 09:21:15"
},
{
    name: "Test Name",
    created_at: "2019-09-29 09:50:15"
}]

const filterByLastMins = (mins, arr) => {
    const currentTime = new Date();
    return arr.filter((elem) => {
        const diffInMins = (currentTime -  Date.parse(elem.created_at)) / (1000 * 60);
        return diffInMins < mins
    })
}

res = filterByLastMins(60, a);
console.log(res);