How to convert DateTime to Eastern Time

前端 未结 3 2048
走了就别回头了
走了就别回头了 2020-12-24 10:09

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         


        
相关标签:
3条回答
  • 2020-12-24 10:56

    You need to split up the logic into two;

    • Check if date is more than start date, startTime > now
    • Check if date is less than end date, 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.

    0 讨论(0)
  • 2020-12-24 11:04

    Try this:

    var timeUtc = DateTime.UtcNow;
    TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
    DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);
    
    0 讨论(0)
  • 2020-12-24 11:14

    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);
    
    0 讨论(0)
提交回复
热议问题