How to get a time zone from a location using latitude and longitude coordinates?

后端 未结 17 1638
走了就别回头了
走了就别回头了 2020-11-21 04:38

Given the latitude and longitude of a location, how does one know what time zone is in effect in that location?

In most cases, we are looking for an IANA/Olson time z

17条回答
  •  名媛妹妹
    2020-11-21 05:06

    You can use geolocator.js for easily getting timezone and more...

    It uses Google APIs that require a key. So, first you configure geolocator:

    geolocator.config({
        language: "en",
        google: {
            version: "3",
            key: "YOUR-GOOGLE-API-KEY"
        }
    });
    

    Get TimeZone if you have the coordinates:

    geolocator.getTimeZone(options, function (err, timezone) {
        console.log(err || timezone);
    });
    

    Example output:

    {
        id: "Europe/Paris",
        name: "Central European Standard Time",
        abbr: "CEST",
        dstOffset: 0,
        rawOffset: 3600,
        timestamp: 1455733120
    }
    

    Locate then get TimeZone and more

    If you don't have the coordinates, you can locate the user position first.

    Example below will first try HTML5 Geolocation API to get the coordinates. If it fails or rejected, it will get the coordinates via Geo-IP look-up. Finally, it will get the timezone and more...

    var options = {
        enableHighAccuracy: true,
        timeout: 6000,
        maximumAge: 0,
        desiredAccuracy: 30,
        fallbackToIP: true, // if HTML5 fails or rejected
        addressLookup: true, // this will get full address information
        timezone: true,
        map: "my-map" // this will even create a map for you
    };
    geolocator.locate(options, function (err, location) {
        console.log(err || location);
    });
    

    Example output:

    {
        coords: {
            latitude: 37.4224764,
            longitude: -122.0842499,
            accuracy: 30,
            altitude: null,
            altitudeAccuracy: null,
            heading: null,
            speed: null
        },
        address: {
            commonName: "",
            street: "Amphitheatre Pkwy",
            route: "Amphitheatre Pkwy",
            streetNumber: "1600",
            neighborhood: "",
            town: "",
            city: "Mountain View",
            region: "Santa Clara County",
            state: "California",
            stateCode: "CA",
            postalCode: "94043",
            country: "United States",
            countryCode: "US"
        },
        formattedAddress: "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
        type: "ROOFTOP",
        placeId: "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
        timezone: {
            id: "America/Los_Angeles",
            name: "Pacific Standard Time",
            abbr: "PST",
            dstOffset: 0,
            rawOffset: -28800
        },
        flag: "//cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.3.1/flags/4x3/us.svg",
        map: {
            element: HTMLElement,
            instance: Object, // google.maps.Map
            marker: Object, // google.maps.Marker
            infoWindow: Object, // google.maps.InfoWindow
            options: Object // map options
        },
        timestamp: 1456795956380
    }
    

提交回复
热议问题