gpt4 book ai didi

c# - 如何从 UTC±00 :00 format? 中的 “CronExpression.GetNextValidTimeAfter(DateTimeOffset)” quartz 调度程序方法获取结果日期时间

转载 作者:行者123 更新时间:2023-12-04 17:30:44 25 4
gpt4 key购买 nike

我正在将 UTC±00:00 时间传递给 Quartz 调度程序中的 GetNextValidTimeAfter() 方法,以根据特定的 cron 表达式计算调度的下一个有效时间,但由于我的系统时间是 PST,结果返回UTC−08:00 格式,但我需要得到 UTC±00:00 格式的结果。

CronExpression expression = new CronExpression("0 0 1 1/1 * ? *"); //Daily 1 AM
DateTime EasternTimeUTC = new DateTime(2020, 3, 7, 6, 00, 0); //Corresponding UTC time for EST time 7th March 1 AM
DateTimeOffset? nextFireUTCTime = expression.GetNextValidTimeAfter(EasternTimeUTC);

nextFireUTCTime 将下一个有效日期时间返回为 3/8/2020 9:00 AM,这是 UTC−08:00 格式,因为我的系统时区是 PST,但我需要 UTC±00:00 的结果,应该是2020 年 3 月 8 日早上 6 点。我如何获得这个值?

由于找不到解决上述问题的合适方法,我尝试了以下方法。

我的系统将始终处于 PST 时区,这意味着我从 GetNextValidTimeAfter() quartz 调度程序方法获得的结果将始终以 UTC−08:00 格式返回。为了获得 EST 时区格式的输出,我根据 DST 从结果中减去 8 或 7 小时,但是当预定时间介于 3 月 8 日凌晨 12 点到凌晨 1 点 59 之间时,此解决方案失败。

CronExpression expression = new CronExpression("0 0 1 1/1 * ? *"); 
DateTime EasternTimeUTC = new DateTime(2020, 3, 7, 6, 00, 0);
DateTimeOffset? nextFireUTCTime = expression.GetNextValidTimeAfter(EasternTimeUTC);
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime UTCNextTime1 = DateTime.UtcNow;
if (timeZone.IsDaylightSavingTime(nextFireUTCTime.GetValueOrDefault()))
{
UTCNextTime1 = nextFireUTCTime.Value.DateTime.AddHours(-7);
}
else
{
UTCNextTime1 = nextFireUTCTime.Value.DateTime.AddHours(-8);
}

最佳答案

确保您传入的日期时间是 UTC 并设置 CronExpression 的时区

CronExpression expression = new CronExpression("0 0 1 1/1 * ? *"); //Daily 1 AM
expression.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime EasternTimeUTC = new DateTime(2020, 3, 7, 6, 00, 0, DateTimeKind.Utc); //Corresponding UTC time for EST time 7th March 1 AM
DateTimeOffset? nextFireUTCTime = expression.GetNextValidTimeAfter(EasternTimeUTC);

关于c# - 如何从 UTC±00 :00 format? 中的 “CronExpression.GetNextValidTimeAfter(DateTimeOffset)” quartz 调度程序方法获取结果日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59968172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com