有没有办法在 vibed 中每天 8:00 上午 运行 完成一项任务?
Is there a way to run a task each day at a 8:00 AM in vibed?
我正在尝试 运行 每天上午 8:00 在 vibe.d 网络应用程序中执行一项任务。
目前,我将 setTimer
函数与 periodic 参数一起使用到 true
。但是这样一来,我无法准确控制触发任务的时间。在 vibed 中有没有简单的方法来做到这一点?
谢谢 sigod,这正是我所做的。我计算到下一个 8:00 AM 的时间并调用 setTimer。这是进一步参考的代码:
void startDailyTaskAtTime(TimeOfDay time, void delegate() task) {
// Get the current date and time
DateTime now = cast(DateTime)Clock.currTime();
// Get the next time occurrence
DateTime nextOcc = cast(DateTime)now;
if (now.timeOfDay >= time) {
nextOcc += dur!"days"(1);
}
nextOcc.timeOfDay = time;
// Get the duration before now and the next occurrence
Duration timeBeforeNextOcc = nextOcc - now;
void setDailyTask() {
// Run the task once
task();
// Run the task all subsequent days at the same time
setTimer(1.days, task, true);
}
setTimer(timeBeforeNextOcc, &setDailyTask);
}
我正在尝试 运行 每天上午 8:00 在 vibe.d 网络应用程序中执行一项任务。
目前,我将 setTimer
函数与 periodic 参数一起使用到 true
。但是这样一来,我无法准确控制触发任务的时间。在 vibed 中有没有简单的方法来做到这一点?
谢谢 sigod,这正是我所做的。我计算到下一个 8:00 AM 的时间并调用 setTimer。这是进一步参考的代码:
void startDailyTaskAtTime(TimeOfDay time, void delegate() task) {
// Get the current date and time
DateTime now = cast(DateTime)Clock.currTime();
// Get the next time occurrence
DateTime nextOcc = cast(DateTime)now;
if (now.timeOfDay >= time) {
nextOcc += dur!"days"(1);
}
nextOcc.timeOfDay = time;
// Get the duration before now and the next occurrence
Duration timeBeforeNextOcc = nextOcc - now;
void setDailyTask() {
// Run the task once
task();
// Run the task all subsequent days at the same time
setTimer(1.days, task, true);
}
setTimer(timeBeforeNextOcc, &setDailyTask);
}