石英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();
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")