Time in between
From 1 January at 9:00 to 2 January at 10:30 is 1 day, 1 hour and 30 minutes, or 1,530 minutes in all. Enter dates, full date-times or clock times, in either order. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- From
- 2026-01-01T09:00:00Z
- To
- 2026-01-02T10:30:00Z
- Days
- 1
- Hours
- 1
- Minutes
- 30
- Total minutes
- 1,530
Time in between is the elapsed clock span that sits between two explicit dates or times, reported as whole days, leftover hours, and leftover minutes. People search time in between when they need that mixed clock breakdown for a shift, a flight, a hospital stay, or a project window, not a civil years-months-days age and not a live countdown with leftover seconds. This tool never invents now from a host clock.
What elapsed time in between actually counts
Elapsed time in between is a clock duration, not a civil age and not a live countdown. The engine takes two validated instants, subtracts their absolute second counts, takes the absolute value so either order is legal, then floors the span into whole days of eighty-six thousand four hundred seconds, leftover hours of three thousand six hundred seconds, and leftover minutes of sixty seconds.
A leftover run of fifty-nine seconds does not become a minute: minutes are whole minutes after days and hours are removed, so the triple is always non-negative integers with hours in zero through twenty-three and minutes in zero through fifty-nine. Date-only values are midnight on that civil day, so the first of January to the third of January is two days, zero hours, and zero minutes.
A datetime such as the first of January at nine o'clock to the second of January at ten thirty is one day, one hour, and thirty minutes. Clock-only values such as nine fifteen and seventeen forty-five stay on an anonymous same day and return zero days plus the intra-day hours and minutes. Equal instants return zero in every component and mark direction as zero.
If the end comes before the start, days, hours, and minutes are still the absolute elapsed length and direction is backward, so a reversed pair does not fail and does not invent a negative duration. The formatted string joins the three components into a readable line such as two days, two hours, thirty minutes for labels and receipts.
Use a neighbouring years-months-days helper when the search is date to date as civil months, a signed-minutes helper when the product only stores one integer, and a countdown helper when leftover seconds must appear; use this page when the query is time in between and the answer must be days, hours, and minutes.
Where a time in between calculator earns its keep
Shift desks and payroll drafts need days, hours, and leftover minutes between a clock-in stamp and a clock-out stamp, not a single integer of minutes and not a civil age in years and months. Travel desks print the same triple on an itinerary so a departure on Friday morning and an arrival on Sunday afternoon is described as two days, a few hours, and leftover minutes instead of a floating average that drifts across a time zone.
Hospital and hotel files store the mixed span against two explicit stamps so a reviewer can replay the same pair months later and obtain the same breakdown. Personal dashboards use the free in-browser time in between calculator for how long a concert, a course session, or a road trip actually ran, without installing a date library or shipping a timezone database to every client.
Keep expectations honest: this capability measures elapsed clock time between two explicit dates or times; it does not skip weekends as business duration, load public holiday calendars, invent today when a field is missing, convert lunar months, or keep leftover seconds in the primary triple. Pair it with a years-months-days tool when the form asks for a civil age, and with a whole-day helper when the product copy never mentions hours.
What you can do with it
Overnight shifts and timesheets
Pass a clock-in datetime and a clock-out datetime to show days, leftover hours, and leftover minutes for a payroll line without host-clock drift.
Travel and itinerary elapsed time
Enter a departure stamp and an arrival stamp to print how long a journey lasted as days, hours, and minutes.
Same-day clock spans
Measure how long a class, a meeting, or a visit lasted between two clock-only times on an anonymous same day.
FAQ
What if the end is earlier than the start?
Days, hours, and minutes are the absolute elapsed span; direction is set to backward so a form can label the pair as reversed without inventing a negative duration.
What does a time in between calculation cost?
The browser tool is free on your device.
How does it split the span into days, hours and minutes?
It counts whole days of 24 hours first, then the leftover whole hours, then the leftover whole minutes. From 1 January at 9:00 to 2 January at 10:30 that gives 1 day, 1 hour and 30 minutes.
What happens to leftover seconds?
They are dropped, not rounded up. Minutes are only whole minutes after the days and hours are taken out, so fifty-nine spare seconds never turn into an extra minute.
Can I enter only dates, or only clock times?
Yes. A date on its own counts from midnight, so 1 January to 3 January is 2 days. Two clock times are treated as the same day and return zero days plus the hours and minutes between them.
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/life/time-in-between \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"2026-01-01T09:00:00Z","to":"2026-01-02T10:30:00Z"}'const res = await fetch("https://api.kit.forhosting.com/life/time-in-between", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"from": "2026-01-01T09:00:00Z",
"to": "2026-01-02T10:30:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/time-in-between",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"from": "2026-01-01T09:00:00Z",
"to": "2026-01-02T10:30:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/time-in-between", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"from":"2026-01-01T09:00:00Z","to":"2026-01-02T10:30:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"from":"2026-01-01T09:00:00Z","to":"2026-01-02T10:30:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/time-in-between", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"from": "2026-01-01T09:00:00Z",
"to": "2026-01-02T10:30:00Z"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.time_in_between",
"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.
Limits
year_min | 1 |
year_max | 9999 |
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
You send both endpoints as calendar days, ISO datetimes, or same-day clock times; the engine validates each token, converts both to absolute seconds with proleptic Gregorian arithmetic, and always returns the same triple in a browser, in continuous integration, and on the API. Impossible calendar days and malformed times fail with invalid_input and are not billed. Successful API calls use the published $0.002 base price.
What elapsed time in between actually counts
Field total_minutes is the exclusive whole-minute count of the same absolute span, useful when a timesheet also needs an unordered length in minutes.
Input contract, date validation, and the response shape
Each value may be a civil calendar day in YYYY-MM-DD form, a full ISO-8601 datetime with an optional T or space separator, optional seconds, optional fractional seconds that are truncated, and an optional trailing Z or numeric offset, or a clock-only time as HH:mm or HH:mm:ss. Years range from one through nine thousand nine hundred ninety-nine, months must be one through twelve, and the day must exist in that month under Gregorian leap rules, including February twenty-nine only in leap years. Hours run from zero through twenty-three and minutes and seconds from zero through fifty-nine. POST a compact JSON body with two required string fields: from and to. Optional aliases start, begin, start_date, and date_from map to from; end, until, end_date, and date_to map to to so form builders and typed SDKs can keep familiar names. Impossible pairs such as two thousand twenty-three hyphen zero two hyphen twenty-nine are rejected with invalid_input instead of being clamped into March. A clock-only time cannot be mixed with a calendar date or datetime: both endpoints must be clock-only or both must carry a date, otherwise the request fails naming the inconsistent pair. Missing fields, empty strings, and non-string values fail with invalid_input naming the field and are not billed. Both endpoints are mandatory on purpose: a time-in-between calculator that silently substitutes the host wall clock produces different answers in continuous integration, on a laptop flying across a meridian, and on a worker in Coordinated Universal Time, which breaks audits and reproducible exports.
Where a time in between calculator earns its keep
Call the prepaid API when timesheet pipelines, itinerary exports, or stay registries need a stable contract under prepaid balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request.
Technical questions
How does this time in between calculator count days, hours, and minutes?
Send JSON with from and to as YYYY-MM-DD, an ISO datetime, or HH:mm. The engine converts both endpoints to absolute seconds, takes the absolute difference, and floors it into whole days, leftover hours, and leftover minutes. The response includes days, hours, minutes, total_minutes, and a formatted line.
Does the time in between calculator use the current time automatically?
No. Both from and to are required. The engine never reads the system clock, so results stay identical in CI, browsers, and API workers.
Which inputs are rejected as invalid dates?
Any value that is not a real Gregorian day or a valid clock time fails with invalid_input: a missing field, a non-string, a malformed token, a month outside one through twelve, a day that does not exist in that month including 29 February in a common year, or an hour outside zero through twenty-three.