I am trying to get the offset hours of a particular time for EST timezone like this
var est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
est.GetUtcOffset(new DateTime(2020, 3, 9)).Hours;
This works fine and returns me -4
, which is right for 9th March 2020
because the daylight saving changes on 8th March 2020 02:00:00
, but when I try to run the same code for date 8th March 2020 02:00:00
, it returns me -5
, while my understanding is that from 2am of 8th march it should start returning me -4.
To get the -4, I have to run it for 3am, that is one hour after the daylight changing.
But why is it so? Why do I have to add one hour to make daylight change take effect?