C# 为ScheduleAt属性保存的Hangfire错误日期/时间

C# 为ScheduleAt属性保存的Hangfire错误日期/时间,c#,multithreading,hangfire,C#,Multithreading,Hangfire,我有一个简单的方法,我试着安排一个任务在特定的时间运行一次。 这是我的函数(在测试了所有类型的workarunds之后,有很多冗余代码) 如果我在Hangfire.State.Data中运行日期为2020-05-19T20:50:00Z的上述示例,我有: {"EnqueueAt":"2020-05-19T20:50:00.0000000Z", "ScheduledAt":"2020-05-19T15:01:16.5174515Z"} 排队很好,但日程安排落后了几个小时。 对于数据库,我使用的

我有一个简单的方法,我试着安排一个任务在特定的时间运行一次。 这是我的函数(在测试了所有类型的workarunds之后,有很多冗余代码)

如果我在Hangfire.State.Data中运行日期为2020-05-19T20:50:00Z的上述示例,我有:

{"EnqueueAt":"2020-05-19T20:50:00.0000000Z",

"ScheduledAt":"2020-05-19T15:01:16.5174515Z"}
排队很好,但日程安排落后了几个小时。 对于数据库,我使用的是Postgres,我也在那里设置了正确的时区

有人知道我做错了什么吗?
谢谢

我被时间参数弄糊涂了。计划没有DateTime参数,您需要为任务指定延迟

Hangfire计划定义:

public static string Schedule([NotNull] this IBackgroundJobClient client, [InstantHandle][NotNull] Expression<Func<Task>> methodCall, TimeSpan delay);

我被时间参数弄糊涂了。计划没有DateTime参数,您需要为任务指定延迟

Hangfire计划定义:

public static string Schedule([NotNull] this IBackgroundJobClient client, [InstantHandle][NotNull] Expression<Func<Task>> methodCall, TimeSpan delay);

如果
scheduled.TimeOfDay
是00:01:00,而
DateTime.Now.TimeOfDay
是23:59:00,会发生什么情况?@TheodorZoulias这是一个很好的捕捉,但我看不出如何解决这个问题。你能给我一个提示吗?也许
返回预定日期时间?是的。我是C#Date API的新手。谢谢你的反馈。我会更新我的答案。如果
计划的.TimeOfDay
是00:01:00,而
日期时间。现在.TimeOfDay
是23:59:00,会发生什么情况?@TheodorZoulias这是一个很好的捕捉,但我看不出如何修复这个问题。你能给我一个提示吗?也许
返回预定日期时间?是的。我是C#Date API的新手。谢谢你的反馈。我会更新我的答案。
private TimeSpan GetDelay(DateTime scheduled)
{
    return scheduled- DateTime.Now;
}