我正在尝试构建一个触发器,每周五晚上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
。但有没有任何理由为什么它这样打印?如果其他人有相同的时间和时区,我会睡得更好。
答案 0 :(得分:1)
正如你所说,日期是等价的。有些用UTC表示,有些用当地时间表示。
您可以致电ToLocalTime()
foreach (var date in dates)
Console.WriteLine (date.ToLocalTime().ToString());