我正在尝试创建一个在金融市场开放时触发一些代码的应用程序。基本上是在伪代码中:
if(9:30AM ET < Time.Now < 4:00PM ET) {//do something}有没有一种方法可以在C#中使用DateTime对象来实现这一点?
发布于 2011-05-14 04:49:32
试试这个:
var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);发布于 2011-05-14 04:49:35
您可以使用TimeZoneInfo类的ConvertTime方法将给定的DateTime转换为东部时区,并从那里进行比较。
var timeToConvert = //whereever you're getting the time from
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);发布于 2011-05-14 04:54:51
你需要将逻辑一分为二;
如果日期大于开始日期,则检查日期;如果日期小于结束日期,则检查startTime > now
endTime < now(
对于日期范围,逻辑应同时满足这两个条件(使用逻辑AND、&&)。
DateTime startTime = DateTime.Today.AddHours(9).AddMinutes(30);
DateTime endTime = DateTime.Today.AddHours(12+4);
DateTime now = DateTime.Now;
if(startTime > now && endTime < now) {
// do something
}如果你在ET时区,它应该工作得很好,否则你需要做一些时区操作。检查其他答案。
https://stackoverflow.com/questions/5997570
复制相似问题