石英StartAt时间适当的DateTime格式

本文关键字:DateTime 格式 StartAt 时间 石英 | 更新日期: 2023-09-27 18:12:57

我有一个时间给定的字符串(例如:timeString = "2:00 PM"),并想解析一个DateTime从它传递到我的CronTrigger的.StartAt()在石英。然而,DateTime.Parse(timeString)给了我7/15/2014 2:00:00 PM,我认为这是.StartAt()的不正确格式,因为我得到了FormatException。我也尝试了DateTime.Parse(timeString).ToUniversalTime(), DateTimeOffset.Parse(timeString)DateTimeOffset.Parse(timeString).ToUniversalTime(),并得到了同样的错误。

上网看,我不确定正确的格式是什么。

下面是相关代码。所有的变量(triggerName, groupName等)都被正确地传递到函数中。

return TriggerBuilder.Create()
    .WithIdentity(triggerName, groupName)
    .StartAt(DateTime.Parse(startString))
    .WithCronSchedule(cronSchedule)
    .Build();

石英StartAt时间适当的DateTime格式

TriggerBuilder需要一个DateTimeOffset(来自TriggerBuilder.cs文件):

 public TriggerBuilder StartAt(DateTimeOffset startTimeUtc)
 {
     startTime = startTimeUtc;
     return this;
 }

查看DateTimeOffset Parse方法的文档,了解它期望的日期和时间格式的示例。

最后,您应该始终将时间传递给Quartz。

您必须在Quartz中使用cron表示法。如果您打算使用这种格式,您可以这样生成一个cron表达式:

String.Format("0 {0} {1} * *", (timeString[2]+timeString[3]), timeString[0]);

现在您必须使用24小时格式来工作。我建议您更改程序中时间的格式,但是您可以通过以下方式检测时间是否为下午:

if(timeString.Split(' ')[1] == "PM")