Equation of time approximation calculator
On day 81 of the year the equation of time is −7.53 minutes, so a sundial reads earlier than a mean-time clock. Enter a day number from 1 to 366 and get the gap between apparent and mean solar time in minutes. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Day of year
- 81
- Equation of time minutes
- -7.53
The equation of time approximation calculator estimates the difference between apparent solar time, which follows the Sun’s observed motion, and mean solar time, which advances uniformly. Enter an ordinal day from 1 through 366 and receive the offset in minutes using a widely used three-term trigonometric approximation. The result is useful for educational work, preliminary solar calculations, sundial corrections, and quick engineering checks where a compact day-based estimate is more appropriate than a full astronomical ephemeris.
Enter the calendar day as an ordinal number
Start by converting the date of interest into its day-of-year number. January 1 is day 1, January 31 is day 31, and February 1 is day 32 in both common and leap years. Dates after February differ by one between those year types, so check whether the intended year includes February 29.
The calculator accepts integers from 1 through 366 and rejects zero, negative values, fractions, text, and values above 366. This explicit range makes the input easy to validate in forms and automated workflows. Day 366 is meaningful only for a leap year, but it is accepted because the function receives an ordinal day rather than a specific year.
If your source begins counting at zero, add one before submitting it. For repeatable comparisons, apply the same date-to-ordinal convention to every record. The returned object repeats the accepted day alongside the computed offset, making it straightforward to associate results with inputs in logs, tables, or batch processing without relying on request order alone.
Understand the approximation and its sign
In this calculator, a positive result means apparent solar time is ahead of mean solar time by the reported number of minutes; a negative result means apparent solar time is behind. For example, a negative offset indicates that a sundial based only on the Sun’s apparent position would read earlier than a uniform mean-solar clock under this sign convention. The changing sign and magnitude arise mainly because Earth’s orbit is eccentric and its rotational axis is tilted relative to the orbital plane.
Those effects combine differently through the year, creating several zero crossings rather than one constant correction.
Use the result at the right level of precision
Treat this value as a practical approximation, not as a replacement for a high-precision solar ephemeris. It depends only on the day number, so it does not incorporate the exact year, time of day, observer coordinates, atmospheric refraction, precession, nutation, or small long-term changes in orbital parameters. That simplicity is valuable for classroom exercises, approximate sundial adjustments, solar-energy screening, and software tests that need a deterministic seasonal correction.
To estimate local apparent solar time, the equation-of-time offset is commonly combined with a longitude correction relative to the relevant standard meridian; timezone rules and daylight-saving adjustments are separate civil-time concerns. Keep the sign convention documented when transferring the result into another formula, because some references define the equation of time with the opposite subtraction order. For scientific navigation, telescope pointing, legal timekeeping, or systems where seconds matter, use a dated astronomical model instead.
What you can do with it
Apply an approximate sundial correction
Estimate how far apparent solar time leads or trails mean solar time on a selected ordinal day.
Teach seasonal solar-time variation
Generate repeatable values that show how orbital eccentricity and axial tilt create a changing annual offset.
Screen solar calculations
Add a lightweight equation-of-time estimate to preliminary solar-position or energy-planning workflows.
FAQ
What does a positive result mean?
A positive value means apparent solar time is ahead of mean solar time under this calculator’s convention.
Can I enter day 366?
Yes. Day 366 is accepted for leap-year dates; use only 1 through 365 for a common year.
Does the calculation need a year or location?
No. This approximation uses only the ordinal day. A location is needed separately for longitude-based local solar-time corrections.
Is this an astronomical ephemeris?
No. It is a compact trigonometric approximation intended for practical estimates, education, and preliminary calculations.
How do I turn a date into its day number?
Count January 1 as day 1: January 31 is day 31 and February 1 is day 32 in any year. After February, leap years run one day ahead, so check whether your year includes February 29.
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/astro/equation-of-time \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"day_of_year":81}'const res = await fetch("https://api.kit.forhosting.com/astro/equation-of-time", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"day_of_year": 81
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/astro/equation-of-time",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"day_of_year": 81
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/astro/equation-of-time", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"day_of_year":81}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"day_of_year":81}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/astro/equation-of-time", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"day_of_year": 81
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "astro.equation_of_time",
"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
Understand the approximation and its sign
The calculation first forms an annual angle B = 2π(day − 81) / 364. It then evaluates E = 9.87 sin(2B) − 7.53 cos(B) − 1.5 sin(B), with E expressed in minutes. This is a standard compact approximation for the equation of time.
Use the result at the right level of precision
Each API request costs $0.002, while the browser implementation uses the same pure calculation and requires no network-dependent data.
Technical questions
How much does an API calculation cost?
Each API request costs $0.002.