我有一个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点运行,因为这是市场在盘前交易时段开始的时间,我做错了什么吗?
1条答案
按热度按时间rbpvctlc1#
对于其他任何试图在特定时间段内运行任务的人,我使用Unix时间戳轻松地检查当前时间是否在指定的范围内。