仅使用 JavaScript 和 React 比较从 API 返回的日期时间

Compare Date Time returned from API using only JavaScript and React

我有一个 API return 是我的日期时间数据,如下所示: “2021-09-29T08:00:00” 我想在今天之前过滤那些日期和 return 所有日期。 我测试了这样的功能:

  const currentDate = new Date();
  const results = licitacoes.map((item) => {
    const dateTime = new Date(item.licitacoesDate);
    if (currentDate < dateTime) {
      console.log("there are dateTime bigger than currentDate");
    } else {
      console.log("currentDate is bigger than DateTime");
    }
  });
这在我的代码中运行良好。但我真正想要的是在用户输入选项 select 时显示所有大于当前日期的日期。 所以我在这里尝试了这段代码:

 const currentDate = new Date();
 licitacoes.map((item) => {
       const dateTime = new Date(item.licitacoesDate);
      console.log(currentDate < dateTime)
    });
return我错了,给我一个错误,所以我也试了这个:

const currentDate = new Date();
licitacoes
      .filter((bigN) => new Date(bigN.licitacoesDate) < currentDate)
      .map((newNumber) => console.log(newNumber.cityName));

如果我测试 bigN.licitacoes.date > currentDate,哪个不起作用 而且 return 给我一个巨大的错误,但显示仍然可用的城市名称。 PS:此代码将显示在 select 按钮的 if 语句中。

licitacoes 将是一个 json 文件,如下所示: 许可证 = [ { “编号”:“1” 城市名称:“伦敦” “licitacoesDate”:“2021-04-05T08:00:00” 交货日期:“2021-05-12T08:00:00” sourceUrl:“www.google.com” licitacoesContent: "lorem ipsum" } ]

  • 大于当前日期:>
  • .map() return数组,使用forOf显示数据。
const currentDate = new Date();
const filtered = licitacoes.filter((item) => new Date(item.licitacoesDate) > currentDate);
for(item of filtered){console.log(item.cityName)}

我认为问题是:您的结果中没有数据?那是因为你没有 return map 函数的值,所以你只需要 return 语句。

如果您只想从 licitacoes 收集 time,您可以这样做:

licitacoes = [ { "id": "1", cityName: "London", "licitacoesDate": "2021-04-05T08:00:00", deliveryDate:"2021-05-12T08:00:00", sourceUrl: "www.google.com",licitacoesContent: "lorem ipsum" } ]


const currentDate = new Date();
const dates = licitacoes.map((item) => {
    const dateTime = new Date(item?.licitacoesDate);
        if (currentDate > dateTime) {
            return item.licitacoesDate
        }

    });
console.log(dates)

更好的方法是先过滤然后 return 值,就像您所做的那样:

licitacoes = [ { "id": "1", cityName: "London", "licitacoesDate": "2021-04-05T08:00:00", deliveryDate:"2021-05-12T08:00:00", sourceUrl: "www.google.com",licitacoesContent: "lorem ipsum" } ]


const currentDate = new Date();
const dates = licitacoes
  .filter((bigN) => new Date(bigN.licitacoesDate) < currentDate)
  .map((newNumber) => newNumber.licitacoesDate);
console.log(dates)

如果你想要return特定数据,你可以这样做:

licitacoes = [ { "id": "1", cityName: "London", "licitacoesDate": "2021-04-05T08:00:00", deliveryDate:"2021-05-12T08:00:00", sourceUrl: "www.google.com",licitacoesContent: "lorem ipsum" } ]


const currentDate = new Date();
const dates = licitacoes
  .filter((bigN) => new Date(bigN.licitacoesDate) < currentDate)
  .map((data) => {
      return {
         time: data.licitacoesDate,
         city: data.cityName,
         sourceUrl: data.sourceUrl
              }
});
console.log(dates)

或者您可以只过滤 licitacoes 而不用 map,它将 return 包含所有过滤项目的数组。