First, I would like to welcome mgnoonan's answer to using Noda Time :) But if you feel less adventurous ...
You are already using the correct time zone - but you should not use BaseUtcOffset , which is not documented for DST
Gets the time difference between the standard time of the current time zone and coordinated universal time (UTC).
It is impossible to accept DST unless you provide it with a DateTime to get the offset for :)
Assuming someDate is a DateTime , you can use:
DateTimeOffset dto = new DateTimeOffset(someDate, tzi.GetUtcOffset(someDate));
Or just ConvertTimeToUtc :
var utcDate = TimeZoneInfo.ConvertTimeToUtc(someDate, tzi);
Please note that you must decide what you want to do if your local time occurs twice due to daylight saving or not at all.
Jon skeet
source share