首页 > 解决方案 > 根据时间戳获取今天和昨天的项目

问题描述

我有一个使用 lowdb 生成的 json 对象。每个 json 条目都有一个时间戳。我不想根据时间戳获取昨天和今天的所有条目。

这里的 items 变量只是一个 json 对象。这是一个示例

{
  "items": [
    {
      "date": 1596131220030,
      "item": {
        "price": "160,00",
        "title": "Cotton Quarter-Zip Sweater"
      }
    },
    {
      "date": 1596232321030,
      "item": {
        "price": "160,00",
        "title": "Cotton Quarter-Zip Sweater"
      }
    }
  ]
}

我想在这个功能中获取昨天和今天的物品

export async function report(){
    try {
        const items = db.get('items').value();
        return items;
    } catch (error) {
        console.log(error);
    }
}

标签: javascriptjsondatetime

解决方案


您可以与“今天”和“昨天”开始的时间值进行比较,例如

// Return time value for the start of given date, default is today
function getToday(d = new Date()) {
  return new Date(+d).setHours(0,0,0,0);
}

// Return time value for the start of day prior to given day, default is today
function getYesterday(d = new Date()) {
  let e = new Date(getToday(d));
  return e.setDate(e.getDate() - 1);
}

let data = {
  "items": [
    {"date": 1596085802005, // 30 Jul 2020
     "item": "1"
    },
    {"date": 1596131220030, // 31 Jul 2020
     "item": "2"
    },
    {"date": 1596232321030, //  1 Aug 2020
     "item": "3"
    }
  ]
}

// Run as for 1 Aug 2020
let yesterday = getYesterday(new Date(2020,7,1));
let result = data.items.filter(item => item.date >= yesterday);
console.log(result);

结果可能因主机时区偏移量而异,因为上述使用本地日期值。


推荐阅读