NestJS @Cron装饰器默认时区及执行时间基准咨询
关于NestJS @Cron装饰器的时区问题
默认时区:UTC时间,不是服务器本地时间。你当前写的
"0 0 * * *"会在UTC午夜触发,对应AWS孟买区域(IST,UTC+5:30)的早上5:30,不符合你要的每日IST午夜执行的需求。如何设置为印度标准时间(IST):
- 全局配置(所有Cron任务生效):
在根模块导入ScheduleModule时指定时区:ScheduleModule.forRoot({ timezone: 'Asia/Kolkata', // 对应印度标准时间的时区标识符 }); - 单个任务配置(仅当前任务生效):
在@Cron装饰器的第二个参数里添加时区配置:@Injectable() export class CronService { @Cron("0 0 * * *", { timezone: 'Asia/Kolkata', }) async midnightCron() { // implementation } }
- 全局配置(所有Cron任务生效):
注意:建议使用时区标识符(如Asia/Kolkata)而非直接写UTC+5:30,这种写法更规范且能兼容夏令时调整(印度虽无夏令时,但遵循标准写法更稳妥)。
内容的提问来源于stack exchange,提问作者Vijay PD
相关产品推荐
相关产品推荐

