我有一个字符串给出的时间(例如:timeString = "2:00 PM"
),并希望从中解析DateTime
以传递给我在Quartz中的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();
答案 0 :(得分:1)
TriggerBuilder需要一个DateTimeOffset(来自TriggerBuilder.cs文件):
public TriggerBuilder StartAt(DateTimeOffset startTimeUtc)
{
startTime = startTimeUtc;
return this;
}
查看DateTimeOffset Parse方法的documentation,了解日期和时间所需的格式示例。
最后,您应该总是将时间传递给UTC中的Quartz.Net,因为这是它所期望的,所以相应地进行转换。
答案 1 :(得分:0)
你必须在Quartz中使用cron表示法。如果您计划在这段时间内使用此格式,则可以通过以下方式生成cron表达式:
String.Format("0 {0} {1} * *", (timeString[2]+timeString[3]), timeString[0]);
现在您必须使用24小时格式才能工作。我建议您更改格式化程序时间的方式,但是您可以通过这种方式检测它的格式是否正确:
if(timeString.Split(' ')[1] == "PM")