Quick Noda Time Conversions
Noda time makes working with timezones, well not a snap but better than dental surgery.
A TzDB timezone is one that looks like
America/Edmonton or, one might presume
DateTimeZone timezone = DateTimeZoneProviders.Tzdb.GetZoneOrNull(timezoneId); ZoneLocalMappingResolver customResolver = Resolvers.CreateMappingResolver(Resolvers.ReturnLater, Resolvers.ReturnStartOfIntervalAfter); var localDateTime = LocalDateTime.FromDateTime(dateTime); var zonedDateTime = timezone.ResolveLocal(localDateTime, customResolver); return zonedDateTime.ToDateTimeUtc();
var local = new LocalDateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second); var tz = DateTimeZoneProviders.Tzdb[timeZoneID]; return local.InZoneLeniently(tz);
But be careful with this one because it might produce weird results around time change periods. If you want to avoid ambiguity or at least throw an exception for it consider