I\'m trying to create an application that triggers some code when the financial markets are open. Basically in pseudo code:
if(9:30AM ET < Time.Now < 4
You need to split up the logic into two;
startTime > now
endTime < now
For a date range the logic should satisfy both (with logical 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
}
If you're in ET timezone it should work fine, but otherwise you need to do some timezone manipulation. Check the other answers.
Try this:
var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);
You could probably use the ConvertTime method of the TimeZoneInfo class to convert a given DateTime to the Eastern timezone and do the comparison from there.
var timeToConvert = //whereever you're getting the time from
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);