JSON 和 Localtime 之间的 JavaScript 时间比较不起作用

JavaScript Time comparison between JSON and Localtime not working

提问人:Belle Flynn 提问时间:10/31/2023 最后编辑:NickBelle Flynn 更新时间:10/31/2023 访问量:29

问:

我正在处理如下所示的 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 开始给我一个数据。我很困惑,请帮忙!

JavaScript JSON 时间 比较

评论


答:

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);