javascript - 按分钟过滤数据 VueJs

标签 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 天前的数据进行过滤。但这对我来说也不起作用。也许是因为我的日期是日期时间而不是日期?

最佳答案

如果你的日期格式可以被默认的 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);

关于javascript - 按分钟过滤数据 VueJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152074/

相关文章:

javascript - 无法在vue.js中执行for循环

javascript - 尽管使用了唯一键,但 v-for 在使用数组拼接时删除了错误的元素

javascript - 带扩展名的文件名验证

c# - 如何将参数从 javascript 发布到 asp.net?

vue.js - vue 3 + vuetify 3 : Unknown node type in node creation at Array. map (<匿名>)

java - 如何将文字字符串值转换为日期格式?

python - Pandas - 从日期时间中提取日期,如果时间超过某个小时则加一天

javascript - getByteFrequencyData 不适用于 Safari 中的实时流

javascript - 在灯箱中播放 flash 电影

c# - 如何使用正确的时区将 Long 类型的日期时间转换为 DateTime