public static TimeZoneResult GetTimeZone(double latitude, double longitude) { var geohash = Geohash.Encode(latitude, longitude, 5); var lineNumber = GetTzDataLineNumbers(geohash); var timeZones = GetTzsFromData(lineNumber).ToList(); if (timeZones.Count == 1) { return(new TimeZoneResult { Result = timeZones[0] }); } if (timeZones.Count > 1) { return(new TimeZoneResult { Result = timeZones[0], AlternativeResults = timeZones.Skip(1).ToList() }); } var offsetHours = CalculateOffsetHoursFromLongitude(longitude); return(new TimeZoneResult { Result = GetTimeZoneId(offsetHours) }); }
/// <summary> /// Determines the IANA time zone for given location coordinates. /// </summary> /// <param name="latitude">The latitude of the location.</param> /// <param name="longitude">The longitude of the location.</param> /// <returns>A <see cref="TimeZoneResult"/> object, which contains the result(s) of the operation.</returns> public static TimeZoneResult GetTimeZone(double latitude, double longitude) { var geohash = Geohash.Encode(latitude, longitude, 5); var lineNumber = GetTzDataLineNumbers(geohash); var timeZones = GetTzsFromData(lineNumber).ToArray(); if (timeZones.Length != 0) { return(new TimeZoneResult(timeZones)); } var offsetHours = CalculateOffsetHoursFromLongitude(longitude); return(new TimeZoneResult(GetTimeZoneId(offsetHours))); }