Time zones converter
14:30 in New York is 19:30 in London. Convert a date and time between named zones such as Europe/Paris or Asia/Tokyo with fixed standard offsets, never summer time, and get the UTC instant plus a note when the day changes. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Datetime
- 2024-06-15T14:30:00
- From zone
- America/New_York
- To zone
- Europe/London
- Datetime in
- 2024-06-15T14:30:00
- Datetime in iso
- 2024-06-15T14:30:00-05:00
- Datetime out
- 2024-06-15T19:30:00
- Datetime out iso
- 2024-06-15T19:30:00+00:00
This time-zones converter takes one explicit ISO-8601 wall-clock datetime and two named IANA time zone identifiers, then returns the same absolute instant written as a local clock at the destination zone.
Named zones, fixed offsets
A zone name such as America/New_York, Europe/Paris or Asia/Tokyo identifies a place in the international time zone database, not a number printed on a ticket. In the real world many of those places change their offset with the seasons: New York is UTC-5 in winter and UTC-4 in summer, London moves from UTC+0 to UTC+1, and Sydney from UTC+10 to UTC+11. This converter does a different job. It uses one standard offset per zone and never applies daylight saving, even when the date you type would fall in summer. That makes every answer repeatable, and it suits teams that already store both ends of a meeting as named zones.
How the time is converted, and what trips people up
The time you enter is read as the wall clock in the source zone, turned into the matching UTC instant, and then written as the wall clock in the destination zone. Zones east of the prime meridian have positive offsets and zones to the west have negative ones. Some offsets are not whole hours: Asia/Kolkata is UTC+5.5, Australia/Adelaide UTC+9.5 and Pacific/Chatham UTC+12.75, while Pacific/Kiritimati reaches UTC+14. The usual surprises are expecting a summer-time hour, which is never added here, and missing a change of date, which the result flags. A name that is not in the table is refused rather than guessed, and fractions of a second are dropped to whole seconds.
Named IANA zones, fixed offsets, and why this converter does not invent DST
An IANA time zone name such as America/New_York, Europe/Paris, or Asia/Tokyo is a stable identifier in the tz database, not a numeric offset printed on a ticket. In the full database those identifiers can change offset when daylight-saving rules apply: New York is UTC-5 in winter and UTC-4 in summer, London is UTC+0 then UTC+1, and Sydney is UTC+10 then UTC+11. Searchers who want that seasonal behaviour already have a DST-aware converter.
This landing is for a different job. The contract therefore uses a built-in table of standard (fixed) civil offsets: America/New_York is UTC-5, Europe/London is UTC+0, Asia/Kolkata is UTC+5.5, Australia/Adelaide is UTC+9.5, Pacific/Chatham is UTC+12.75, and Pacific/Kiritimati is UTC+14. Positive offsets sit east of the prime meridian; negative offsets sit west.
The conversion never consults the host clock, never calls a network time service, and never applies a DST transition even if the calendar date you typed would have been in summer in the real world.
What you can do with it
Meeting invites with IANA zone names
Teams that already store both sides as IANA identifiers convert a local start stamp into the wall clock colleagues read elsewhere without opening a daylight-saving database.
FAQ
What does the time-zones converter do?
You supply one explicit ISO wall-clock datetime and two named IANA time zones. The tool returns the same absolute instant as converted local time at the destination zone, plus a UTC Zulu stamp and a day-wrap note.
Does this apply daylight saving time?
No. Offsets are the standard (fixed) civil offsets from a built-in table. America/New_York is always UTC-5 here even in June. There is no tz database, no Date usage, and no spring-forward or fall-back.
Is the time-zones converter free?
The browser tool is free and runs locally.
What time is 14:30 in New York in London?
It is 19:30. New York counts as UTC-5 and London as UTC+0, so the clock moves forward five hours and stays on the same calendar day. No summer-time hour is added.
What happens when the converted time falls on another day?
The result carries the new date and a note that the calendar day changed at the destination, so a late-evening meeting in one zone is not read as the same day in the other.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/conv/time-zones \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2024-06-15T14:30:00","from_zone":"America/New_York","to_zone":"Europe/London"}'const res = await fetch("https://api.kit.forhosting.com/conv/time-zones", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2024-06-15T14:30:00",
"from_zone": "America/New_York",
"to_zone": "Europe/London"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/conv/time-zones",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2024-06-15T14:30:00",
"from_zone": "America/New_York",
"to_zone": "Europe/London"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/conv/time-zones", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2024-06-15T14:30:00","from_zone":"America/New_York","to_zone":"Europe/London"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2024-06-15T14:30:00","from_zone":"America/New_York","to_zone":"Europe/London"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/conv/time-zones", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"datetime": "2024-06-15T14:30:00",
"from_zone": "America/New_York",
"to_zone": "Europe/London"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "conv.time_zones",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Supply a source stamp such as 2024-06-15T14:30:00, a from_zone of America/New_York, and a to_zone of Europe/London, and the tool yields 2024-06-15T19:30:00 as the converted local time together with a UTC Zulu stamp, a signed offset shift, and a calendar-day note when midnight is crossed. If either identifier is missing from the table the task fails with invalid_input naming the unrecognized zone.
Named IANA zones, fixed offsets, and why this converter does not invent DST
Aliases such as US/Eastern, US/Pacific, GB, Japan, and POSIX Etc/GMT plus-or-minus N resolve to the same canonical names and minutes. That is the product promise behind the time-zones slug: named zones, fixed rules, converted local time, and a hard invalid_input when a name is unrecognized rather than a guessed city or a silent UTC fallback.
How to call the API and how to read every field in the response
POST a JSON body with three required fields. The field datetime is an ISO-8601 wall-clock string: four-digit year, month, day, a T or space separator, hours and minutes, optional seconds, optional fractional seconds that are truncated to whole seconds, and an optional trailing Z or numeric offset that is accepted only so the wall components can be parsed—from_zone remains the authoritative source offset. Aliases for datetime include dt, time, when, timestamp, and datetime_in. The field from_zone is the source IANA identifier, and to_zone is the destination; each accepts canonical Area/Location names, common legacy aliases, UTC, GMT, and Etc/GMT signed POSIX labels, matched case-insensitively with spaces treated as underscores. Aliases for from_zone include from, source_zone, tz_from, timezone_from, and from_tz; aliases for to_zone include to, target_zone, tz_to, timezone_to, and to_tz. On success the response echoes datetime_in as the normalized wall stamp, datetime_in_iso with the source plus-or-minus HH:MM attached, datetime_out and datetime_out_iso for the converted local time, local_time as HH:MM:SS, from_zone and to_zone as canonical names, from_offset_hours and to_offset_hours as rounded hour numbers, matching UTC plus-or-minus labels, offset_diff_hours as to minus from, utc_iso for the same instant in Zulu, year month day hour minute second as integers of the destination civil clock, day_offset as how many midnights were crossed, day_note and message as short English summaries, formula as a one-line identity, and steps as an ordered array of substitution lines you can show next to the answer. Failed validation—missing fields, malformed ISO strings, impossible calendar days such as 2023-02-29, hours outside zero through twenty-three, or an unrecognized time zone name—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item.
Practical tips, limits, related searches, and where this tool fits
Half-hour and quarter-hour zones are first-class: Asia/Kolkata is five and a half hours, Asia/Kathmandu is five hours forty-five minutes, Australia/Adelaide is nine and a half, Pacific/Chatham is twelve hours forty-five minutes. Prefer this capability when you already hold an explicit ISO stamp and two IANA names and you want fixed-offset reproducibility; if you only have numeric UTC plus-or-minus labels, use the offset-to-offset helper instead; if you need summer time, use a DST-aware zone tool. Round-trip checks are easy: convert A to B, then B back to A with swapped zones, and confirm the original wall clock returns after the same absolute instant is reconstructed. Prefer canonical IANA names when you have them (America/New_York, Europe/Berlin, Asia/Tokyo) and let the table fold aliases such as US/Eastern or Japan onto the same offset minutes. Remember the signed shift is always destination offset minus source offset: if the source is America/New_York at UTC-5 and the target is Europe/London at UTC+0, offset_diff_hours is plus five, so fourteen thirty at the source becomes nineteen thirty the same calendar day in London. Crossing midnight sets day_offset to plus one or minus one and the day_note string explains which side of midnight the destination lands on; a Tokyo morning converted toward Los Angeles often lands on the previous calendar day. Pair examples when teaching: same zone leaves the wall clock unchanged; westbound conversion subtracts hours; eastbound adds hours; an unrecognized name such as Not/A_Zone demonstrates the hard invalid_input path. This landing targets people searching for time zones converter, convert datetime between IANA time zones, or named zone local time conversion; it is not a flight-duration calculator, not a DST advisor, not a numeric-only UTC-offset shifter, and not a city-name gap tool that never moves a stamp. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately send a bogus zone.
Integration use cases
Log and API stamp cross-checks
Engineers rewrite an ISO event recorded under one named zone into another named zone for dashboards, including next-day wrap and a Zulu reference, using only fixed offsets.
Deterministic unit-test fixtures
Services that pin IANA names generate golden datetime_out pairs and deliberate unrecognized-name invalid_input cases without host Date drift or seasonal DST flips.
Technical questions
What happens if a time zone name is unrecognized?
The API returns invalid_input naming the field and the unrecognized identifier. Only names present in the built-in IANA table (plus documented aliases such as US/Eastern or Etc/GMT-9) are accepted, and those failures are not billed.
How is the converted local time computed?
UTC instant equals wall_from minus the source zone's fixed offset; wall_to equals that UTC instant plus the destination zone's fixed offset. Equivalently, wall_to equals wall_from plus (to_offset minus from_offset), with calendar-day wrap when midnight is crossed.