为什么只有第一次触发时间是正确的
本文关键字:时间 第一次 为什么 | 更新日期: 2023-09-27 18:31:12
我正在尝试构建一个触发器,以便在每周五晚上 11:59 运行。我正在使用Quartz .NET v2.2.4。我的时区是+8:00。这是我想到的。
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule(x=> x
.OnDaysOfTheWeek(DayOfWeek.Friday)
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 59))
.WithRepeatCount(-1)
)
.Build();
DateTimeOffset origin = new DateTimeOffset(DateTime.Now);
DateTimeOffset end = origin.AddDays(100);
IList<DateTimeOffset> dates = TriggerUtils.ComputeFireTimesBetween(trigger as IOperableTrigger, null, origin, end);
foreach(var date in dates)
{
Console.WriteLine(date.ToString());
}
但是,问题是这会打印以下内容
9/13/2013 11:59:00 PM +08:00
9/20/2013 3:59:00 PM +00:00
9/27/2013 3:59:00 PM +00:00
10/4/2013 3:59:00 PM +00:00
10/11/2013 3:59:00 PM +00:00
我知道11:59:00 PM +08:00
等于3:59:00 PM +00:00
.但是有什么理由这样打印吗?如果其他人有相同的时间和时区,我会睡得更好。
正如你所说,日期是等效的。有些以 UTC 表示,有些以当地时间表示。
您可以通过调用ToLocalTime()
将它们转换为本地时间
foreach (var date in dates)
Console.WriteLine (date.ToLocalTime().ToString());