Solar Horizon Calendar
Search every declared solar window and retain unknown, polar and invalid states with complete evidence.
Complete observer and window JSON
The selected source is processed locally in your browser.
No file selected
UTC windows include their start and exclude their end. Civil time uses your complete offset intervals; no historical time zone is guessed.
A missing event alone does not establish polar day or night. Both 370-day searches and the complete window must support the state; uncertainty stays unknown.
This calculation adopts the fixed mature model’s single-crossing bracket and Nyquist assumptions. After a resolved event, the complete interval from its original returned time to the original positive bracket endpoint is recorded as that same event and consumed before continuing. The original 0.1-second numerical tolerance and sub-second pair exclusion remain; this is not a mathematical certificate or an observation precision guarantee. Crossings near altitude extrema, tangencies and sub-second pairs are outside the completeness guarantee; observed unsupported or touching evidence remains unknown.
The sample uses the published San Jose coordinates and explicitly declares its UTC window. It does not invent the polar issue’s missing date.
Before you start
UTC windows include their start and exclude their end. Civil time uses your complete offset intervals; no historical time zone is guessed.
How to use this tool
- Select the original JSON file or paste a complete document with all observers and windows.
- Declare the UTC endpoints and requested upper-limb or centre twilight definitions; supply the full offset map when civil time is used.
- Inspect every request, event and search state, then save all six files and the complete report.
Supported inputs and limits
Strict UTF-8 JSON ≤8 MiB; 1–1,000 observers and 1–10,000 complete windows.
Sun only; 1900–2100. All internal probes beyond the supported years give out-of-range/unknown.
4,000,000 actual examined interval days, 100,000 event records and 100,000,000 combined ephemeris evaluations, including both 370-day lookaheads.
All six physical files together ≤64 MiB; full text and copy each ≤64 MiB, typed ≤128 MiB, aggregate ≤320 MiB and wire ≤1 GiB. All allocations jointly reserve the original 256 MiB memory before allocation.
One 120-second deadline includes capture, read, calculation, encoding, cleanup and first publication. Joint capacity and browser acceptance remain unmeasured.
Times are approximate at minute scale. Weather, refraction and the visible horizon can change an observed crossing.
This calculation adopts the fixed mature model’s single-crossing bracket and Nyquist assumptions. After a resolved event, the complete interval from its original returned time to the original positive bracket endpoint is recorded as that same event and consumed before continuing. The original 0.1-second numerical tolerance and sub-second pair exclusion remain; this is not a mathematical certificate or an observation precision guarantee. Crossings near altitude extrema, tangencies and sub-second pairs are outside the completeness guarantee; observed unsupported or touching evidence remains unknown.
Worked example
Example input
{
"schema": "neatbo.solar-horizon.input.v1",
"observers": [
{
"id": "San Jose",
"latitude": 37.2580565,
"longitude": -121.9359228,
"heightMeters": 0,
"metersAboveGround": 0
}
],
"windows": [
{
"id": "2022-07-06 21:00 PDT context, explicitly converted UTC",
"observerOrdinal": 0,
"start": {
"utc": "2022-07-07T04:00:00Z"
},
"end": {
"utc": "2022-07-08T04:00:00Z"
},
"requests": [
{
"kind": "upper-limb",
"directions": [
"rise",
"set"
]
},
{
"kind": "civil",
"directions": [
"rise",
"set"
]
},
{
"kind": "nautical",
"directions": [
"rise",
"set"
]
},
{
"kind": "astronomical",
"directions": [
"rise",
"set"
]
}
]
}
]
}Example options
The sample uses the published San Jose coordinates and explicitly declares its UTC window. It does not invent the polar issue’s missing date.
Example output
All four crossing definitions produce their complete UTC events, search identities and any uncertainty diagnostics.
When something does not work
Any input, source, locale or setting change cancels the current run and clears its old result and links immediately. After cancellation, retry the same original and parameters in a fresh worker; reduce a scope that exceeds the joint budgets.
Frequently asked questions
Is civil dawn the same as sunrise?
No. Civil twilight searches the geometric centre at −6°. Apparent sunrise uses the upper limb with the fixed engine’s refraction and observer dip. Nautical and astronomical thresholds are −12° and −18°.
Does a missing rise prove polar night?
A missing event alone does not establish polar day or night. Both 370-day searches and the complete window must support the state; uncertainty stays unknown.
Does the offset table recover historical DST?
The tool applies only the complete map you provide. It does not infer an IANA zone, use your device zone or assume a modern rule for 1917.
What happens between a returned event and the next search?
This calculation adopts the fixed mature model’s single-crossing bracket and Nyquist assumptions. After a resolved event, the complete interval from its original returned time to the original positive bracket endpoint is recorded as that same event and consumed before continuing. The original 0.1-second numerical tolerance and sub-second pair exclusion remain; this is not a mathematical certificate or an observation precision guarantee. Crossings near altitude extrema, tangencies and sub-second pairs are outside the completeness guarantee; observed unsupported or touching evidence remains unknown.
Documentation & further reading
Related tools
Timestamp converter
Convert integer Unix timestamps and known-offset dates, with UTC and IANA-zone display.
Time zones and UTC formatting
Resolve time zones and daylight-saving ambiguity, or format an instant in UTC.
Days between dates
Find out just how far apart two dates are.
Add or subtract dates
Add or subtract time from a chosen date.