仅使用 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 包含所有过滤项目的数组。
我有一个 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");
}
});
const currentDate = new Date();
licitacoes.map((item) => {
const dateTime = new Date(item.licitacoesDate);
console.log(currentDate < dateTime)
});
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 包含所有过滤项目的数组。