Convert time between UTC offsets
14:30 at UTC+2 is 07:30 at UTC−5: the same instant written on the other side's clock. Enter a date and time and two fixed offsets to get the destination time, the matching UTC moment and the hour shift. 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 offset
- 2
- To offset
- -5
- Datetime in
- 2024-06-15T14:30:00
- Datetime in iso
- 2024-06-15T14:30:00+02:00
- From offset label
- UTC+2
- To offset label
- UTC−5
This convert-time-between-UTC-offsets calculator takes one explicit ISO-8601 wall-clock datetime and two fixed offsets from Coordinated Universal Time, then returns the same absolute instant written as a wall clock at the destination offset. Offsets may be whole hours or civil fractions such as five point five for India, supplied as numbers or plus-or-minus HH:MM strings inside the closed interval from minus fourteen through plus fourteen hours.
Fixed UTC offsets versus named zones and why wall-clock conversion matters
A fixed UTC offset is a constant real number of hours from Coordinated Universal Time: plus two for a published winter schedule, minus five for Eastern Standard Time, plus five hours thirty minutes for India Standard Time, or plus fourteen for Line Islands. Positive values sit east of the prime meridian under the usual civil convention; negative values sit west.
Named zones such as America/New_York or Europe/Paris are a different contract entirely: they are IANA identifiers whose effective offset can flip when daylight-saving rules apply, and resolving them requires a timezone database and a specific calendar date. This capability deliberately refuses that path. You already know both ends as fixed UTC± labels from a ticket, a server configuration, a meeting invite, or a style guide, and you need the wall clock that the other side reads for the same absolute moment.
Searchers who type convert time between UTC offsets or fixed offset wall clock converter want arithmetic that will not silently spring forward or fall back. Searchers who need New York versus Tokyo with DST should use a full zone converter instead.
What you can do with it
Meeting invites with published UTC± labels
Teams that already know both sides as fixed offsets convert a local start stamp into the wall clock colleagues see elsewhere without opening a full timezone database.
FAQ
What does convert time between UTC offsets mean here?
You supply one explicit ISO wall-clock datetime and two fixed UTC offsets. The tool returns the same absolute instant as a wall clock at the target offset, plus a UTC Zulu stamp and a day-wrap note.
Does this handle daylight saving time or city names?
No. There is no IANA database and no Date usage. Supply the fixed offsets that already apply for the date you care about, or resolve named zones elsewhere first.
What happens if an offset exceeds ±14 hours?
Real civil offsets stay within about ±14 hours; values outside that range are treated as errors and are not billed.
Is the convert-time-between-UTC-offsets tool free?
The browser tool is free and runs locally.
Can I use half-hour offsets such as India's?
Yes. Enter 5.5 or +05:30 for India Standard Time, which is five hours thirty minutes ahead of UTC. Any offset from -14 to +14 hours works, written as a number or as hours and minutes.
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/date/convert-between-offsets \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2024-06-15T14:30:00","from_offset":2,"to_offset":-5}'const res = await fetch("https://api.kit.forhosting.com/date/convert-between-offsets", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2024-06-15T14:30:00",
"from_offset": 2,
"to_offset": -5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/convert-between-offsets",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2024-06-15T14:30:00",
"from_offset": 2,
"to_offset": -5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/convert-between-offsets", 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_offset":2,"to_offset":-5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2024-06-15T14:30:00","from_offset":2,"to_offset":-5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/convert-between-offsets", 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_offset": 2,
"to_offset": -5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.convert_between_offsets",
"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
Enter a source stamp such as 2024-06-15T14:30:00, a from_offset of plus two hours, and a to_offset of minus five hours, and the tool yields 2024-06-15T07:30:00 at the target with a matching UTC Zulu stamp, signed hour shift, and calendar-day note when midnight is crossed.
Fixed UTC offsets versus named zones and why wall-clock conversion matters
Fourteen hours is the practical outer bound of real civil offsets in widespread use; values beyond that range are treated as data-entry errors rather than exotic half-day schemes, and they fail with invalid_input before any conversion runs.
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_offset remains the authoritative source offset for the conversion. Aliases for datetime include dt, time, when, timestamp, and datetime_in. The field from_offset is the source fixed offset in hours, and to_offset is the target; each accepts a finite number such as two, minus five, or five point five, or a string such as plus zero two colon zero zero or minus zero five colon thirty, and each must lie within minus fourteen to plus fourteen hours inclusive. Aliases for from_offset include from, offset_from, source_offset, and utc_from; aliases for to_offset include to, offset_to, target_offset, and utc_to. On success the response echoes datetime_in as the normalized wall stamp without an offset suffix, datetime_in_iso with the source ±HH:MM attached, from_offset and to_offset as rounded hour numbers, from_offset_label and to_offset_label as short UTC± strings, offset_diff_hours as to minus from, datetime_out and datetime_out_iso for the destination wall clock, 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, non-finite offsets, offsets outside ±14, malformed ISO strings, impossible calendar days such as 2023-02-29, or hours outside zero through twenty-three—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
Keep both offsets inside the published plus-or-minus fourteen hour window; values such as fifteen or minus fourteen point one are rejected so callers cannot invent impossible civil offsets. Prefer fractional hours for half-hour and three-quarter-hour zones—five point five for India, five point seven five for Nepal, nine point five for parts of Australia—rather than smuggling minutes into a separate field that does not exist for the offset itself. Prefer this capability when you already hold an explicit ISO stamp and two fixed UTC± labels; if you only need the numeric hour gap without shifting a stamp, use the offset-difference helper instead; if you only have city names, resolve offsets first or use a DST-aware zone tool. Round-trip checks are easy: convert A to B, then B back to A with swapped offsets, and confirm the original wall clock returns after the same absolute instant is reconstructed. Remember the signed shift is always to_offset minus from_offset: if the source is UTC plus two and the target is UTC minus five, offset_diff_hours is minus seven, so fourteen thirty at the source becomes seven thirty the same calendar day at the target. 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. Pair examples when teaching: same offset leaves the wall clock unchanged; whole-hour westbound conversion subtracts hours; eastbound adds hours; a half-hour offset produces a thirty-minute shift; an out-of-range offset demonstrates the hard invalid_input path. This landing targets people searching for convert time between UTC offsets, fixed offset wall clock converter, or ISO datetime from one UTC offset to another; it is not a flight-duration calculator, not a daylight-saving advisor, not a city-name zone converter, and not a pure hour-difference tool without a datetime. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately send offset fifteen.
Integration use cases
Log and API stamp cross-checks
Engineers rewrite an ISO event recorded under one fixed offset into another fixed offset for dashboards, including next-day wrap and a Zulu reference.
Deterministic unit-test fixtures
Services that store fixed offsets generate golden datetime_out pairs and deliberate ±14-boundary plus invalid_input cases without host Date drift.
Technical questions
How is the target wall clock computed?
UTC instant equals wall_from minus from_offset; wall_to equals that UTC instant plus to_offset. Equivalently, wall_to equals wall_from plus (to_offset minus from_offset), with calendar-day wrap when midnight is crossed.