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)
            });
        }
Ejemplo n.º 2
0
        /// <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)));
        }