NodeJS 在4 am和9:30 am之间每X秒运行一次函数时出现问题

qyzbxkaa  于 2023-03-12  发布在  Node.js
关注(0)|答案(1)|浏览(125)

我有一个Node.js服务器运行一个定时任务,在美国东部时间上午4点到9:30之间每隔X秒从API获取数据,所以是市场前交易会话,但它仍然继续查询API,仍然打印“指定范围之间的时间”。
首先,我检查它是否是一个市场假日,然后检查时间,如果它是在某些小时之间。
下面是查看时间的函数:

function checkTime() {
const estNow = new Date(now.toLocaleString("en-US", {timeZone: "America/New_York"}));
const estHour = estNow.getHours();
const estMinute = estNow.getMinutes();

if((estHour >= 4 && estHour <= 9) || estHour === 9 && estMinute <= 30){
    console.log('Time between specified ranges');
    return true;
} 
console.log('Not between 4 am and 9:30 am EST');
return false;

// bypass
//return true;

}

API调用的主代码:

async function main() {
const startTime = Date.now(); // To time how long function takes
var timeRight = checkTime();
var isMarketHoliday();
if (timeRight && !isMarketHoliday) {
    try {
       // Await api calls
   
      } catch (error) {
        console.error(error);
      }
}
const endTime = Date.now();
console.log(`Function took: ${endTime - startTime} ms`);
}

我每隔x秒调用一次main:

setInterval(main, 25000); // run every 25 seconds

它不需要在凌晨4点运行,因为这是市场在盘前交易时段开始的时间,我做错了什么吗?

rbpvctlc

rbpvctlc1#

对于其他任何试图在特定时间段内运行任务的人,我使用Unix时间戳轻松地检查当前时间是否在指定的范围内。

function getUnixTimestamp(dateString) {
var futureTime = new Date(dateString);
var futureTimestamp = futureTime.getTime();
var futureUnixTimestamp = Math.floor(futureTimestamp);
return futureUnixTimestamp;
}

function checkTime() {
    var now = new Date().toLocaleDateString("en-US");
    const rightNow = Date.now();
    const premarketEnd = getUnixTimestamp(now + ' 09:30:00');
    const premarketStart = getUnixTimestamp(now + ' 04:00:00');
    const currentTime = new Date(rightNow).toLocaleTimeString("en-US")
    if(rightNow > premarketStart && rightNow < premarketEnd) {
        console.log(`The current time is ${currentTime} and is between 
specified ranges.`)
    return true;
    } else {
        console.log(`The current time is ${currentTime} and outside 
        specified ranges.`)
        return false;
    }
}

相关问题