/// <summary> /// Convert IANA timezone to a UTC offset. /// </summary> /// <param name="IanaTimezone">eg "America/Vancouver"</param> /// <returns>The offset eg -7</returns> public static Int16 GetUtcOffset(String IanaTimezone) { Int16 utcOffset = 0; try { NodaTime.IDateTimeZoneProvider tzProvider = NodaTime.DateTimeZoneProviders.Tzdb; if (!tzProvider.Ids.Contains(IanaTimezone)) { log.Warn("Could not map IANA timezone '" + IanaTimezone + "' to UTC offset."); } else { NodaTime.DateTimeZone tz = tzProvider[IanaTimezone]; NodaTime.Offset offset = tz.GetUtcOffset(new NodaTime.Instant()); utcOffset = Convert.ToInt16(offset.Seconds / 3600); } } catch (System.Exception ex) { OGCSexception.Analyse("Not able to convert IANA timezone '" + IanaTimezone + "' to UTC offset.", ex); } return(utcOffset); }