Search by task, endpoint, field, or error.
Time API
Local time, timezone lookup, and conversion.
Get the current time in UTC, in an IANA timezone, or for a place. Every answer includes at, an ISO date and time with its UTC offset, and unix, the same instant in whole seconds since the Unix epoch. Timezone, offset, and daylight saving are core. Deep adds numeric offsets, seasonal clock changes and a friendly zone name, included on every plan.
Omit at for now. Pass an ISO timestamp with Z or a UTC offset for a specific instant. The fixed timestamps in these examples make their responses reproducible.
UTC
Parameters 16
- latnumber · query · optional
Latitude. Requires lon; omit both for UTC
Range: -90 to 90
- lonnumber · query · optional
Longitude. Requires lat; omit both for UTC
Range: -180 to 180
- ipstring · query · optional
Explicit IPv4 or IPv6 network location. Private, unknown or ambiguous locations remain unresolved. Mutually exclusive with every primary selector and coordinates.
- citystring · query · optional
Exact city name or stable city ID. Optional country/state narrows matches. Multiple places return choices; no population-ranked selection.
- countrystring · query · optional
ISO alpha-2 country selector, or context for city/address. A country with multiple timezones returns choices.
- statestring · query · optional
Subdivision code for city/address, with country required. Bare code or country-prefixed code.
- iatastring · query · optional
Three-letter airport code. Multiple records remain choices. Mutually exclusive with other primary inputs.
- icaostring · query · optional
Four-letter ICAO airport code, matched to recorded airport coordinates.
- unlocodestring · query · optional
UN/LOCODE for a covered port with recorded coordinates. Two country letters plus three location characters; optional separating space.
- addressstring · query · optional
Street address with country=US. Exact recorded point matches only; missing or ambiguous points remain unresolved. Include number and postal code. This lookup does not verify delivery or occupancy.
- atstring · query · optional
ISO date and time with up to three fractional-second digits; defaults to now. Unix numbers are not accepted as input. An explicit Z or UTC offset identifies an instant. With to= or targets=, no offset means source-zone wall time; without either, no offset means UTC. By default, repeated wall times select the earlier occurrence and skipped times advance by the offset gap. Use disambiguation to choose another policy. Invalid calendar dates return 400.
- tostring · query · optional
Destination IANA timezone. Appends to with local at, unix, timezone, abbreviation, offset, and dst for the same instant. deep=true adds name, offset_minutes, and offset_seconds inside to.deep.
- disambiguationstring · query · optional
For offsetless at with to or targets: compatible selects the earlier repeated time and advances skipped times by the clock gap; earlier or later chooses the earlier or later instant; reject returns HTTP 400 ambiguous_time for a repeat or nonexistent_time for a gap. Branch on code, then ask for a choice before retrying. Valid values do not alter an explicit-offset instant, now, or the UTC interpretation without a destination. Invalid policies return 400 invalid_request.
Default:
compatibleValues:
compatible, earlier, later, reject- targetsstring · query · optional
Comma-separated list of 1–10 IANA destination identifiers, instead of to. Appends an ordered targets array with one compact clock per requested zone. Duplicates stay in place, all unix values match, and any unknown zone rejects the whole request. One pooled request for the entire conversion. deep=true adds numeric offsets and a name to each target.
- deepboolean · query · optional
Friendly zone name, numeric offsets, clock changes, seasonal boundaries, rules edition and local-time resolution. Included on every plan, with no additional charge.
Values:
true- langstring · query · optional
Display language as one BCP 47 tag, such as fr or zh-Hant. Changes supported display labels only; IDs, codes, native names, facts, parsing and deep access stay unchanged. Omit for the original response. Unsupported regions use the supported language base; unsupported languages or scripts use English. Missing labels retain their source value. Accept-Language is not read automatically. Available on the current API contract; frozen 1.0.0 is unchanged.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time(undefined, { at: "2026-08-29T19:00:00Z" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "UTC",
"abbreviation": "UTC",
"offset": "+00:00",
"dst": false,
"at": "2026-08-29T19:00:00+00:00",
"unix": 1788030000
}By timezone
Parameters 7
- timezonestring · path · required
IANA timezone identifier. Slashes may be literal or URL-encoded
- atstring · query · optional
ISO date and time with up to three fractional-second digits; defaults to now. Unix numbers are not accepted as input. An explicit Z or UTC offset identifies an instant. With to= or targets=, no offset means source-zone wall time; without either, no offset means UTC. By default, repeated wall times select the earlier occurrence and skipped times advance by the offset gap. Use disambiguation to choose another policy. Invalid calendar dates return 400.
- tostring · query · optional
Destination IANA timezone. Appends to with local at, unix, timezone, abbreviation, offset, and dst for the same instant. deep=true adds name, offset_minutes, and offset_seconds inside to.deep.
- disambiguationstring · query · optional
For offsetless at with to or targets: compatible selects the earlier repeated time and advances skipped times by the clock gap; earlier or later chooses the earlier or later instant; reject returns HTTP 400 ambiguous_time for a repeat or nonexistent_time for a gap. Branch on code, then ask for a choice before retrying. Valid values do not alter an explicit-offset instant, now, or the UTC interpretation without a destination. Invalid policies return 400 invalid_request.
Default:
compatibleValues:
compatible, earlier, later, reject- targetsstring · query · optional
Comma-separated list of 1–10 IANA destination identifiers, instead of to. Appends an ordered targets array with one compact clock per requested zone. Duplicates stay in place, all unix values match, and any unknown zone rejects the whole request. One pooled request for the entire conversion. deep=true adds numeric offsets and a name to each target.
- deepboolean · query · optional
Friendly zone name, numeric offsets, clock changes, seasonal boundaries, rules edition and local-time resolution. Included on every plan, with no additional charge.
Values:
true- langstring · query · optional
Display language as one BCP 47 tag, such as fr or zh-Hant. Changes supported display labels only; IDs, codes, native names, facts, parsing and deep access stay unchanged. Omit for the original response. Unsupported regions use the supported language base; unsupported languages or scripts use English. Missing labels retain their source value. Accept-Language is not read automatically. Available on the current API contract; frozen 1.0.0 is unchanged.
Use an IANA id such as America/New_York, Asia/Tokyo, or UTC. A slash can remain in the path or be URL-encoded as %2F.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time("America/New_York", { at: "2026-08-29T19:00:00Z" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "America/New_York",
"abbreviation": "EDT",
"offset": "-04:00",
"dst": true,
"at": "2026-08-29T15:00:00-04:00",
"unix": 1788030000
}Find a timezone
Search /time/zones?q=new york for a supported IANA identifier, or omit q for the full list. Search ignores case and treats spaces and underscores alike. Results are sorted; no match returns an empty array. The response includes the serving IANA rules edition, so autocomplete and conversion can use the same identifiers. Use city= on the bare Time route for city names.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time.zones("new york");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone_database_version": "2026c",
"timezones": [
"America/New_York"
]
}Build a timezone picker
Filter /time/zones by country, IANA area, signed offset,dst at the selected instant, or observes_dst during its UTC calendar year. Add sort=offset for numerical offset order and details=true for detailed zones rows. The existing timezones array always contains strings. at fixes the instant; otherwise all rows share one captured now. Country associations follow IANA’s shared rules since 1970; a row can list more than one country. Encode a positive offset’s plus sign as %2B. Both dst=false and observes_dst=false are valid filters.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time.zones(undefined, { country: "JP", at: "2026-09-24T12:00:00Z", details: true, sort: "offset" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone_database_version": "2026c",
"at": "2026-09-24T12:00:00.000Z",
"timezones": [
"Asia/Tokyo",
"Japan"
],
"zones": [
{
"timezone": "Asia/Tokyo",
"countries": [
"AU",
"JP"
],
"area": "Asia",
"abbreviation": "JST",
"offset": "+09:00",
"offset_seconds": 32400,
"dst": false,
"observes_dst": false
},
{
"timezone": "Japan",
"countries": [
"AU",
"JP"
],
"area": "Asia",
"abbreviation": "JST",
"offset": "+09:00",
"offset_seconds": 32400,
"dst": false,
"observes_dst": false
}
]
}Resolve an abbreviation explicitly
Use /time/zones?abbreviation=CST to get every matching identifier at the selected instant. Narrow with country, area or offset, then pass the chosen IANA identifier to Time. An abbreviation is a search criterion; it never silently selects a country or timezone. Aliases can appear as separate supported identifiers.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time.zones(undefined, { country: "CN", abbreviation: "CST", at: "2026-09-24T12:00:00Z" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone_database_version": "2026c",
"at": "2026-09-24T12:00:00.000Z",
"timezones": [
"Asia/Chongqing",
"Asia/Chungking",
"Asia/Harbin",
"Asia/Shanghai",
"PRC"
]
}Start with a place
Use exactly one explicit input on /time: city, country, ip,iata, icao, unlocode or address. A city name can include country and state context; a stable City ID also works. Address input requires country=US and matches recorded address points. IP input uses network-location evidence. UN/LOCODE lookup covers recorded ports with coordinates. Place lookup uses the same at, to and targets options and one pooled request.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time(undefined, { at: "2026-09-24T12:00:00Z", iata: "JFK" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"location": {
"input": {
"type": "iata",
"value": "JFK"
},
"status": "resolved",
"candidates": [
{
"id": "ourairports_3622",
"name": "John F. Kennedy International Airport",
"country": "US",
"state": "NY",
"timezone": "America/New_York",
"latitude": 40.639447,
"longitude": -73.779317
}
],
"truncated": false,
"source": "OurAirports 2026-09-24"
},
"latitude": 40.639447,
"longitude": -73.779317,
"timezone": "America/New_York",
"at": "2026-09-24T08:00:00-04:00",
"unix": 1790251200,
"offset": "-04:00",
"abbreviation": "EDT",
"dst": true
}Inspect location.status. A unique timezone match is resolved. Multiple places or a country with multiple zones return ambiguous, with up to 50 candidates. Choose a candidate’s timezone explicitly, or narrow the city/address context.truncated=true means more matches may exist. Missing locations return not_found. Ambiguous and missing locations keep clock fields and requested destinations null; they never fall back to UTC.
Location coverage and sources
The 2026-09-24 airport snapshot resolves 9,053 IATA codes and 10,496 ICAO codes to one civil timezone. The recorded port subset resolves 3,244 UN/LOCODEs to one zone; it is not the complete UN/LOCODE directory.
Address lookup covers matched US points. City and IP results depend on the available location records. Airport and port coordinates without a civil-zone match stay unresolved. Boundary data is 2026b; clock rules are 2026c.
Source attributionFrom coordinates
Parameters 16
- latnumber · query · optional
Latitude. Requires lon; omit both for UTC
Range: -90 to 90
- lonnumber · query · optional
Longitude. Requires lat; omit both for UTC
Range: -180 to 180
- ipstring · query · optional
Explicit IPv4 or IPv6 network location. Private, unknown or ambiguous locations remain unresolved. Mutually exclusive with every primary selector and coordinates.
- citystring · query · optional
Exact city name or stable city ID. Optional country/state narrows matches. Multiple places return choices; no population-ranked selection.
- countrystring · query · optional
ISO alpha-2 country selector, or context for city/address. A country with multiple timezones returns choices.
- statestring · query · optional
Subdivision code for city/address, with country required. Bare code or country-prefixed code.
- iatastring · query · optional
Three-letter airport code. Multiple records remain choices. Mutually exclusive with other primary inputs.
- icaostring · query · optional
Four-letter ICAO airport code, matched to recorded airport coordinates.
- unlocodestring · query · optional
UN/LOCODE for a covered port with recorded coordinates. Two country letters plus three location characters; optional separating space.
- addressstring · query · optional
Street address with country=US. Exact recorded point matches only; missing or ambiguous points remain unresolved. Include number and postal code. This lookup does not verify delivery or occupancy.
- atstring · query · optional
ISO date and time with up to three fractional-second digits; defaults to now. Unix numbers are not accepted as input. An explicit Z or UTC offset identifies an instant. With to= or targets=, no offset means source-zone wall time; without either, no offset means UTC. By default, repeated wall times select the earlier occurrence and skipped times advance by the offset gap. Use disambiguation to choose another policy. Invalid calendar dates return 400.
- tostring · query · optional
Destination IANA timezone. Appends to with local at, unix, timezone, abbreviation, offset, and dst for the same instant. deep=true adds name, offset_minutes, and offset_seconds inside to.deep.
- disambiguationstring · query · optional
For offsetless at with to or targets: compatible selects the earlier repeated time and advances skipped times by the clock gap; earlier or later chooses the earlier or later instant; reject returns HTTP 400 ambiguous_time for a repeat or nonexistent_time for a gap. Branch on code, then ask for a choice before retrying. Valid values do not alter an explicit-offset instant, now, or the UTC interpretation without a destination. Invalid policies return 400 invalid_request.
Default:
compatibleValues:
compatible, earlier, later, reject- targetsstring · query · optional
Comma-separated list of 1–10 IANA destination identifiers, instead of to. Appends an ordered targets array with one compact clock per requested zone. Duplicates stay in place, all unix values match, and any unknown zone rejects the whole request. One pooled request for the entire conversion. deep=true adds numeric offsets and a name to each target.
- deepboolean · query · optional
Friendly zone name, numeric offsets, clock changes, seasonal boundaries, rules edition and local-time resolution. Included on every plan, with no additional charge.
Values:
true- langstring · query · optional
Display language as one BCP 47 tag, such as fr or zh-Hant. Changes supported display labels only; IDs, codes, native names, facts, parsing and deep access stay unchanged. Omit for the original response. Unsupported regions use the supported language base; unsupported languages or scripts use English. Missing labels retain their source value. Accept-Language is not read automatically. Available on the current API contract; frozen 1.0.0 is unchanged.
Land returns its civil timezone. Open ocean returns a nautical Etc/GMT zone. Those ids use the POSIX sign: Etc/GMT+3 means UTC-03:00. The response offset and local time use the ordinary sign. If the timezone cannot resolve, its fields are null. Coordinates also accept at and to.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time.at(40.7128, -74.006, { at: "2026-08-29T19:00:00Z" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"latitude": 40.7128,
"longitude": -74.006,
"timezone": "America/New_York",
"abbreviation": "EDT",
"offset": "-04:00",
"dst": true,
"at": "2026-08-29T15:00:00-04:00",
"unix": 1788030000
}Convert
Add to with a destination timezone. The to object gives its local time and offset. Both unix values are identical: this is one instant in two places. Omit at to convert now.
Parameters 7
- timezonestring · path · required
IANA timezone identifier. Slashes may be literal or URL-encoded
- atstring · query · optional
ISO date and time with up to three fractional-second digits; defaults to now. Unix numbers are not accepted as input. An explicit Z or UTC offset identifies an instant. With to= or targets=, no offset means source-zone wall time; without either, no offset means UTC. By default, repeated wall times select the earlier occurrence and skipped times advance by the offset gap. Use disambiguation to choose another policy. Invalid calendar dates return 400.
- tostring · query · optional
Destination IANA timezone. Appends to with local at, unix, timezone, abbreviation, offset, and dst for the same instant. deep=true adds name, offset_minutes, and offset_seconds inside to.deep.
- disambiguationstring · query · optional
For offsetless at with to or targets: compatible selects the earlier repeated time and advances skipped times by the clock gap; earlier or later chooses the earlier or later instant; reject returns HTTP 400 ambiguous_time for a repeat or nonexistent_time for a gap. Branch on code, then ask for a choice before retrying. Valid values do not alter an explicit-offset instant, now, or the UTC interpretation without a destination. Invalid policies return 400 invalid_request.
Default:
compatibleValues:
compatible, earlier, later, reject- targetsstring · query · optional
Comma-separated list of 1–10 IANA destination identifiers, instead of to. Appends an ordered targets array with one compact clock per requested zone. Duplicates stay in place, all unix values match, and any unknown zone rejects the whole request. One pooled request for the entire conversion. deep=true adds numeric offsets and a name to each target.
- deepboolean · query · optional
Friendly zone name, numeric offsets, clock changes, seasonal boundaries, rules edition and local-time resolution. Included on every plan, with no additional charge.
Values:
true- langstring · query · optional
Display language as one BCP 47 tag, such as fr or zh-Hant. Changes supported display labels only; IDs, codes, native names, facts, parsing and deep access stay unchanged. Omit for the original response. Unsupported regions use the supported language base; unsupported languages or scripts use English. Missing labels retain their source value. Accept-Language is not read automatically. Available on the current API contract; frozen 1.0.0 is unchanged.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time("America/New_York", { at: "2026-08-29T15:00", to: "Asia/Tokyo", disambiguation: "reject" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "America/New_York",
"abbreviation": "EDT",
"offset": "-04:00",
"dst": true,
"at": "2026-08-29T15:00:00-04:00",
"unix": 1788030000,
"to": {
"timezone": "Asia/Tokyo",
"abbreviation": "JST",
"offset": "+09:00",
"dst": false,
"at": "2026-08-30T04:00:00+09:00",
"unix": 1788030000
}
}Several destinations, one instant
Use targets=Europe/London,Asia/Tokyo instead of to to convert to up to ten zones in one pooled request. SDKs accept a list. The targets array preserves your order and duplicates; every entry has the same unix value as the source. An invalid zone rejects the whole request. Both destination options also work with coordinates. An unresolved source coordinate returns targets: null.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time("America/New_York", { at: "2026-08-29T15:00", disambiguation: "reject", targets: ["Europe/London", "Asia/Tokyo"] });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "America/New_York",
"at": "2026-08-29T15:00:00-04:00",
"unix": 1788030000,
"offset": "-04:00",
"abbreviation": "EDT",
"dst": true,
"targets": [
{
"timezone": "Europe/London",
"at": "2026-08-29T20:00:00+01:00",
"unix": 1788030000,
"offset": "+01:00",
"abbreviation": "BST",
"dst": true
},
{
"timezone": "Asia/Tokyo",
"at": "2026-08-30T04:00:00+09:00",
"unix": 1788030000,
"offset": "+09:00",
"abbreviation": "JST",
"dst": false
}
]
}With to or targets, a timestamp without a UTC offset reads as wall time in the source timezone. A repeated time when clocks move back selects the earlier occurrence. A skipped time when clocks move forward advances by the size of the gap. Include an explicit offset to choose an exact instant. Without either destination option, an offsetless timestamp reads as UTC. Invalid dates return 400 instead of rolling into another month.
Choose what happens at a clock change
For a local time supplied with to or targets, add disambiguation=reject to return HTTP 400 ambiguous_time when that time happens twice, or nonexistent_time when it was skipped. Ask the user to choose an occurrence or a different time before scheduling it. An explicit Z or UTC offset always identifies one instant and needs no disambiguation.
Branch on the error code, never its message. After the user chooses, resend the same input with disambiguation=earlier or later. An explicit offset also identifies the occurrence. The interactive converter asks first; the API keeps compatible as its default for existing integrations.
| disambiguation | Repeated time | Skipped time |
|---|---|---|
compatible (default) | Earlier occurrence | Move forward by the gap |
earlier | Earlier occurrence | Move back by the gap |
later | Later occurrence | Move forward by the gap |
reject | 400 error | 400 error |
New York repeats 01:30 on November 1, 2026. This request chooses the second occurrence, at 06:30 UTC. The default chooses 05:30 UTC. Change disambiguation to reject to see the error. On March 8, 2026, 02:30 in New York does not exist: reject returns an error, earlier returns 01:30, and later returns 03:30.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time("America/New_York", { at: "2026-11-01T01:30", to: "UTC", disambiguation: "later" });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "America/New_York",
"at": "2026-11-01T01:30:00-05:00",
"unix": 1793514600,
"offset": "-05:00",
"abbreviation": "EST",
"dst": false,
"to": {
"timezone": "UTC",
"at": "2026-11-01T06:30:00+00:00",
"unix": 1793514600,
"offset": "+00:00",
"abbreviation": "UTC",
"dst": false
}
}See how the local time was resolved
Add deep=true to get deep.resolution for an offsetless conversion. Its kind is unique, overlap, or gap; policy records the selected policy and adjustment_seconds records the signed change to the requested wall clock. For a gap or overlap, alternatives contains the earlier and later answers, in instant order, with offset-bearing at, unix seconds and offset. A unique time has no alternatives.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time("America/New_York", { at: "2026-03-08T02:30", to: "UTC", deep: true });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "America/New_York",
"at": "2026-03-08T03:30:00-04:00",
"unix": 1772955000,
"offset": "-04:00",
"abbreviation": "EDT",
"dst": true,
"to": {
"timezone": "UTC",
"at": "2026-03-08T07:30:00+00:00",
"unix": 1772955000,
"offset": "+00:00",
"abbreviation": "UTC",
"dst": false,
"deep": {
"name": "GMT+00:00",
"offset_minutes": 0,
"offset_seconds": 0
}
},
"deep": {
"name": "Eastern Time",
"offset_minutes": -240,
"offset_seconds": -14400,
"next_dst": {
"at": "2026-11-01T06:00:00.000Z",
"dst": false,
"offset": "-05:00",
"abbreviation": "EST"
},
"timezone_database_version": "2026c",
"resolution": {
"kind": "gap",
"policy": "compatible",
"adjustment_seconds": 3600,
"alternatives": [
{
"at": "2026-03-08T01:30:00-05:00",
"unix": 1772951400,
"offset": "-05:00"
},
{
"at": "2026-03-08T03:30:00-04:00",
"unix": 1772955000,
"offset": "-04:00"
}
]
}
}
}A gap has no matching instant: its alternatives move the wall clock back or forward by the gap. Resolution is null for now, explicit-offset inputs, lookups without a destination, and unresolved source coordinates. Keep the exact returned at when milliseconds matter; unix contains whole seconds.
The option also works with coordinates. Without a destination option, offsetless at still means UTC. Valid disambiguation values have no effect on that interpretation, explicit-offset instants, or now. An unknown option value returns 400.
Plan for the whole clock change
Source Deep separates standard_offset_seconds from dst_offset_seconds; their sum is the actual offset.season describes the current interval carrying the DST rule flag, or the next one starting within 400 days. Its start and end include the UTC boundary, the wall clock before and after the change, and signed change_seconds. The before/after values describe one boundary under each offset. An unavailable boundary stays null; a zone with no known interval has a null season. Negative seasonal adjustments and double daylight saving keep their actual values. Political changes without the DST flag remain separate from seasons.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time("America/New_York", { at: "2026-06-01T12:00:00Z", deep: true });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "America/New_York",
"at": "2026-06-01T08:00:00-04:00",
"unix": 1780315200,
"offset": "-04:00",
"abbreviation": "EDT",
"dst": true,
"deep": {
"name": "Eastern Time",
"offset_minutes": -240,
"offset_seconds": -14400,
"next_dst": {
"at": "2026-11-01T06:00:00.000Z",
"dst": false,
"offset": "-05:00",
"abbreviation": "EST"
},
"timezone_database_version": "2026c",
"resolution": null,
"standard_offset": "-05:00",
"standard_offset_seconds": -18000,
"dst_offset_seconds": 3600,
"season": {
"start": {
"at": "2026-03-08T07:00:00.000Z",
"before": {
"at": "2026-03-08T02:00:00-05:00",
"offset": "-05:00",
"offset_seconds": -18000,
"abbreviation": "EST",
"dst": false
},
"after": {
"at": "2026-03-08T03:00:00-04:00",
"offset": "-04:00",
"offset_seconds": -14400,
"abbreviation": "EDT",
"dst": true
},
"change_seconds": 3600
},
"end": {
"at": "2026-11-01T06:00:00.000Z",
"before": {
"at": "2026-11-01T02:00:00-04:00",
"offset": "-04:00",
"offset_seconds": -14400,
"abbreviation": "EDT",
"dst": true
},
"after": {
"at": "2026-11-01T01:00:00-05:00",
"offset": "-05:00",
"offset_seconds": -18000,
"abbreviation": "EST",
"dst": false
},
"change_seconds": -3600
}
}
}
}Timestamp precision and timezone rules
at accepts ISO dates and times with up to three fractional-second digits, not Unix numbers. unix is output in whole seconds, rounded down. Nonzero milliseconds stay in at. Save deep.timezone_database_version with the returned instant to identify the actual IANA rules edition behind that answer. The Time help and zone list also report it. Future clock changes follow that edition; governments can revise them. A fixed instant can have a different local rendering after a rules update.
Coordinates use the bundled geographic timezone boundaries. A past at changes the clock rules, not the geographic boundaries used to select the zone. The rules edition identifies offsets and transitions; friendly display names use the host’s verified ICU labels and can differ across runtime versions.
The dst flag follows timezone rules, including negative daylight-saving adjustments. Use offset and at for the actual local clock. Historical zones can have offsets with seconds. deep.offset_seconds is exact;deep.offset_minutes keeps whole minutes for existing clients. When at has an offset such as +00:09:21, use unixin parsers that only accept whole-minute offsets. In JavaScript, that is new Date(unix * 1000).
Response fields
- latitude
- Input or resolved location latitude. Null if there is no single coordinate; omitted for timezone-only requests
- longitude
- Input or resolved location longitude. Null if there is no single coordinate; omitted for timezone-only requests
- timezone
- IANA timezone id. Nautical Etc/GMT zone over open ocean
- abbreviation
- Timezone-rule abbreviation, such as EDT or JST; some zones use numeric labels. Not a unique timezone identifier
- offset
- UTC offset as ±HH:MM. Historical subminute offsets include :SS
- dst
- Daylight-saving indicator from the timezone rules at the reference time, including negative seasonal adjustments
- at
- Local date and time as ISO 8601 with the resolved UTC offset. Always present; now unless ?at= selects a moment. Null for an ambiguous or unresolved source location
- to
- With ?to= only: the other zone evaluated at the same instant
- unix
- Unix timestamp in seconds for the resolved instant. Always present; fractional seconds round down. Null for an ambiguous or unresolved source location
- to.at
- The converted local date and time, ISO with its UTC offset
- to.unix
- The same Unix timestamp as unix: both zones describe one instant
- targets
- With targets= instead of to=: ordered array of 1–10 destination clocks, each with timezone, at, unix, offset, abbreviation and dst. Duplicates stay in place; every unix matches the source. Null if the source location is ambiguous or unresolved
- location
- For explicit place inputs: input, status (resolved, ambiguous or not_found), candidates, truncated and source. Ambiguous/missing locations retain null clock fields. Choose a candidate timezone explicitly
Existing /timezone integrations continue to work. Use /time for new integrations.
Deep
?deep=true Friendly zone name, numeric offsets, clock changes, seasonal boundaries, rules edition and local-time resolution. Included on every plan, with no additional charge.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.time("America/New_York", { at: "2026-08-29T19:00:00Z", deep: true });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"timezone": "America/New_York",
"abbreviation": "EDT",
"offset": "-04:00",
"dst": true,
"at": "2026-08-29T15:00:00-04:00",
"unix": 1788030000,
"deep": {
"name": "Eastern Time",
"offset_minutes": -240,
"offset_seconds": -14400,
"next_dst": {
"at": "2026-11-01T06:00:00.000Z",
"dst": false,
"offset": "-05:00",
"abbreviation": "EST"
},
"timezone_database_version": "2026c",
"resolution": null
}
}Deep fields
- deep.name
- Friendly / generic name (e.g. Eastern Time)
- deep.offset_minutes
- UTC offset in whole minutes, truncated toward zero
- deep.offset_seconds
- Exact UTC offset in seconds, including historical subminute offsets
- deep.next_dst
- Next offset transition after the reference time, or null
- targets[].deep
- With deep=true: name, offset_minutes and offset_seconds for this destination
- deep.timezone_database_version
- The actual pinned IANA rules edition used for this answer; present in source deep only
- deep.resolution
- For offsetless conversion: kind (unique, overlap or gap), applied policy, signed adjustment_seconds, and earlier/later alternatives with at, unix and offset. Unique times have an empty alternatives array. Null for now, explicit offsets, no destination or an unresolved source location
- deep.standard_offset
- Standard UTC offset at the requested instant, as ±HH:MM[:SS]. Null when unresolved
- deep.standard_offset_seconds
- Exact standard UTC offset in seconds, from the same timezone rules
- deep.dst_offset_seconds
- Actual offset minus standard offset, in seconds. Preserves zero, negative saving and double daylight saving
- deep.season
- Current DST-flag interval, or next interval starting within 400 days. start and end each contain the UTC boundary, before/after local clocks and change_seconds; each boundary can independently be null. Null when no interval is known
Display language
Pass lang with a language tag such as fr, pt-BR, or zh-Hant. Requested deep.name for the returned timezone and any conversion target, using the timezone rules at that same instant. Timezone IDs, times, offsets and DST facts stay unchanged.
Omitting lang preserves the original response. Codes, IDs, numeric facts and native-name fields stay unchanged. Missing translations keep their existing source value; unknown values stay null. A preserved name_local may equal the translated name.
Send a chosen browser preference explicitly, for example { lang: navigator.language } in your JavaScript SDK options. The API does not read Accept-Language automatically. Unsupported regions fall back to their supported base language; unsupported languages or scripts use English. Empty, invalid or repeated tags return 400.
Content-Language identifies languages used in translated display fields and known English fallbacks. This option follows the current API contract. Requests selecting frozen 1.0.0 retain that contract. Select API 2.0.0 to use display language.
41 display language choices
| Language tag | Language |
|---|---|
| en | American English |
| zh-Hans | 简体中文 |
| fr | français (France) |
| de | Deutsch |
| it | italiano |
| ja | 日本語 |
| ko | 한국어 |
| es | español de España |
| ar | العربية |
| bg | български |
| ca | català |
| hr | hrvatski |
| cs | čeština |
| da | dansk |
| nl | Nederlands |
| fi | suomi |
| el | Ελληνικά |
| he | עברית |
| hi | हिन्दी |
| hu | magyar |
| id | Indonesia |
| kk | қазақ тілі |
| ms | Melayu |
| nb | norsk bokmål |
| pl | polski |
| pt | português (Brasil) |
| ro | română |
| ru | русский |
| sk | slovenčina |
| sv | svenska |
| th | ไทย |
| tr | Türkçe |
| uk | українська |
| vi | Tiếng Việt |
| zh-Hant | 繁體中文 |
| en-AU | Australian English |
| en-GB | British English |
| fr-CA | français canadien |
| es-419 | español latinoamericano |
| pt-PT | português europeu |
| zh-Hant-HK | 繁體中文(中國香港特別行政區) |
Build with Time
- Find an open store nearby
- Show an event in the visitor's time zone
- Find shared working hours
- Show opening hours on a business page
Questions? Email