## Time Zone

Time Zone API requests are constructed as a URL string. The API returns time
zone data for a point on the earth, specified by a latitude-longitude pair.
Note that time zone data may not be available for locations over water, such as
oceans or seas.

A Time Zone request takes the following form:

    https://maps.googleapis.com/maps/api/timezone/outputFormat?parameters

where `outputFormat` may be either of the following values:

- `json` (recommended), indicates output in [JavaScript Object Notation](https://en.wikipedia.org/wiki/JSON) (JSON); or
- `xml`, indicates output in XML, wrapped within a `<TimeZoneResponse>` node.

> [!NOTE]
> **Note:** URLs must be [properly encoded](https://developers.google.com/maps/documentation/timezone/web-service-best-practices.md.txt#BuildingURLs) to be valid and are limited to 16384 characters for all web services. Be aware of this limit when constructing your URLs. Note that different browsers, proxies, and servers may have different URL character limits as well.

## Required parameters

### location


A comma-separated latitude,longitude tuple,
`location=39.6034810,-119.6822510`, representing the location
to look up.

### timestamp


The intended time as seconds since midnight, January 1, 1970 UTC. The Time
Zone API uses the `timestamp` to determine whether or not
Daylight Savings should be applied, based on the time zone of the
`location`.


Note that the API does not take historical time zones into account. That
is, if you specify a past timestamp, the API does not take into account
the possibility that the location was previously in a different time zone.

## Optional parameters

### language

The language in which to return results.

- See the [list of supported languages](https://developers.google.com/maps/faq.md.txt#languagesupport). Google often updates the supported languages, so this list may not be exhaustive.
- If `language` is not supplied, the API attempts to use the preferred language as specified in the `Accept-Language` header.
- The API does its best to provide a street address that is readable for both the user and locals. To achieve that goal, it returns street addresses in the local language, transliterated to a script readable by the user if necessary, observing the preferred language. All other addresses are returned in the preferred language. Address components are all returned in the same language, which is chosen from the first component.
- If a name is not available in the preferred language, the API uses the closest match.
- The preferred language has a small influence on the set of results that the API chooses to return, and the order in which they are returned. The geocoder interprets abbreviations differently depending on language, such as the abbreviations for street types, or synonyms that may be valid in one language but not in another. For example, *utca* and *tér* are synonyms for street in Hungarian.

## Time Zone examples

This section includes some sample queries that demonstrate features of the API.

The below query performs a time zone request for Nevada, USA. The timestamp is
set to December 5, 2024.

### URL

```
https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1733428634&key=YOUR_API_KEY
```

### curl

```
curl -L -X GET 'https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1733428634&key=YOUR_API_KEY'
```

### JSON

```json
{
  "dstOffset": 0,
  "rawOffset": -28800,
  "status": "OK",
  "timeZoneId": "America/Los_Angeles",
  "timeZoneName": "Pacific Standard Time",
}
```

### XML

```xml
<TimeZoneResponse>
 <status>OK</status>
 <raw_offset>-28800.0000000</raw_offset>
 <dst_offset>0.0000000</dst_offset>
 <time_zone_id>America/Los_Angeles</time_zone_id>
 <time_zone_name>Pacific Standard Time</time_zone_name>
</TimeZoneResponse>
      
```

The below query performs a time zone request for Nevada, USA. The location is
the same as the above request, but the timestamp is set to March 15th, 2024. The
response now includes a Daylight Savings Time offset.

### URL

```
https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1710547034&key=YOUR_API_KEY
```

### curl

```
curl -L -X GET 'https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1710547034&key=YOUR_API_KEY'
```

### JSON

```json
{
  "dstOffset": 3600,
  "rawOffset": -28800,
  "status": "OK",
  "timeZoneId": "America/Los_Angeles",
  "timeZoneName": "Pacific Daylight Time",
}
        
```

### XML

```xml
<TimeZoneResponse>
 <status>OK</status>
 <raw_offset>-28800.0000000</raw_offset>
 <dst_offset>3600.0000000</dst_offset>
 <time_zone_id>America/Los_Angeles</time_zone_id>
 <time_zone_name>Pacific Daylight Time</time_zone_name>
</TimeZoneResponse>
```

This example is similar to the above two, but sets a language parameter. The
response will now be localized to Spanish.

### URL

```
https://maps.googleapis.com/maps/api/timezone/json?language=es&location=39.6034810,-119.6822510&timestamp=1710547034&key=YOUR_API_KEY
```

### curl

```
curl -L -X GET 'https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1710547034&language=es&key=YOUR_API_KEY'
```

### JSON

```json
{
  "dstOffset": 3600,
  "rawOffset": -28800,
  "status": "OK",
  "timeZoneId": "America/Los_Angeles",
  "timeZoneName": "hora de verano del Pacífico",
}
      
```

### XML

```xml
<TimeZoneResponse>
 <status>OK</status>
 <raw_offset>-28800.0000000</raw_offset>
 <dst_offset>3600.0000000</dst_offset>
 <time_zone_id>America/Los_Angeles</time_zone_id>
 <time_zone_name>hora de verano del Pacífico</time_zone_name>
</TimeZoneResponse>
      
```

## Time Zone responses

For each valid request, the Time Zone returns a response in the
format indicated within the request URL.

### TimeZoneResponse

| Field | Required | Type | Description |
|:---|---|---|---|
| #### `status` | **required** | [TimeZoneStatus](https://developers.google.com/maps/documentation/timezone/requests-timezone.md.txt#TimeZoneStatus "TimeZoneStatus") | See [TimeZoneStatus](https://developers.google.com/maps/documentation/timezone/requests-timezone.md.txt#TimeZoneStatus "TimeZoneStatus") for more information. |
| #### `dstOffset` | optional | number | The offset for daylight-savings time in seconds. This will be zero if the time zone is not in Daylight Savings Time during the specified `timestamp`. |
| #### `errorMessage` | optional | string | Detailed information about the reasons behind the given status code. Included if status other than `Ok`. |
| #### `rawOffset` | optional | number | The offset from UTC (in seconds) for the given location. This does not take into effect daylight savings. |
| #### `timeZoneId` | optional | string | a string containing the ID of the time zone, such as "America/Los_Angeles" or "Australia/Sydney". These IDs are defined by [Unicode Common Locale Data Repository (CLDR) project](http://cldr.unicode.org/), and currently available in file timezone.xml. When a timezone has several IDs, the canonical one is returned. In xml responses, this is the first alias of each timezone. For example, "Asia/Calcutta" is returned, not "Asia/Kolkata". |
| #### `timeZoneName` | optional | string | The long form name of the time zone. This field will be localized if the language parameter is set. eg. `Pacific Daylight Time` or `Australian Eastern Daylight Time`. |

### TimeZoneStatus


The `status` field within the Time Zone response object contains
the status of the request. The `status` field may contain the
following values:

- `OK` indicates that the request was successful.

-
  `INVALID_REQUEST` indicates that the request was malformed.

- `OVER_DAILY_LIMIT` indicates any of the following:

  - The API key is missing or invalid.
  - Billing has not been enabled on your account.
  - A self-imposed usage cap has been exceeded.
  - The provided method of payment is no longer valid (for example, a credit card has expired).
-
  `OVER_QUERY_LIMIT` indicates the requestor has exceeded quota.

-
  `REQUEST_DENIED` indicates that the API did not complete the
  request. Confirm that the request was sent over HTTPS instead of HTTP.

- `UNKNOWN_ERROR` indicates an unknown error.

-
  `ZERO_RESULTS` indicates that no time zone data could be found
  for the specified position or time. Confirm that the request is for a
  location on land, and not over water.

#### Calculating the local time

The local time of a given location is the sum of the
`timestamp` parameter, and the `dstOffset` and
`rawOffset` fields from the result.