提问人:Belle Flynn 提问时间:10/31/2023 最后编辑:NickBelle Flynn 更新时间:10/31/2023 访问量:29
JSON 和 Localtime 之间的 JavaScript 时间比较不起作用
JavaScript Time comparison between JSON and Localtime not working
问:
我正在处理如下所示的 JSON 数据
[
{
"hourly_AQI": 73.0,
"hourly_date": "Tue, 31 Oct 2023 11:00:00 GMT"
},
{
"hourly_AQI": 79.0,
"hourly_date": "Tue, 31 Oct 2023 13:00:00 GMT"
},
{
"hourly_AQI": 77.0,
"hourly_date": "Tue, 31 Oct 2023 14:00:00 GMT"
}
]
我还得到了一个代码,它将创建一个hourly_date大于本地当前时间的数组。但是当我在 18:03 使用并运行代码时,代码会给我从 13:00:00 开始的时间,这是为什么呢?
const now = new Date();
const filteredData = aqiData?.filter((item) => {
const date = new Date(item.hourly_date);
// Check if the item's date is in the future
return date >= now
});
console.log(filteredData)
我也在下午 1 点左右尝试过,即使我指定代码给我大于或等于,它也会从早上 7:00 开始给我一个数据。我很困惑,请帮忙!
答:
0赞
Rafi Ahmed
10/31/2023
#1
const now = new Date();
const localTimeZone = 'your-time-zone-here';
const formatter = new Intl.DateTimeFormat('en-US', { timeZone: localTimeZone, hour12: false });
const filteredData = aqiData?.filter((item) => {
const date = new Date(item.hourly_date);
const formattedDate = formatter.format(date);
return new Date(formattedDate) >= now;
});
console.log(filteredData);
0赞
yanir midler
10/31/2023
#2
在进行比较之前,您可以将 now Date 对象转换为 GMT。 以下是您如何做到这一点:
const now = new Date();
const nowInGMT = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
const filteredData = aqiData?.filter((item) => {
const date = new Date(item.hourly_date);
// Check if the item's date is in the future
return date >= nowInGMT;
});
console.log(filteredData);
评论