Welcome to Orime!
The Math of Divination
Every astrological calculation — natal chart, Purple Star palace, planetary position — begins with the same step.
Your birth date and time get collapsed into a single number. Everything else follows from that.
What it is
The Julian Day Number (JDN) is a continuous count of days starting from January 1, 4713 BCE (Julian calendar) at noon. That date was chosen by 16th-century scholar Joseph Scaliger as a convenient common epoch — it predates most historical records.
Today, June 21, 2026, is JDN 2,461,213. Yesterday was 2,461,213. Tomorrow will be 2,461,215. No gaps, no resets, no calendar-system confusion.
The power is in the subtraction. To find days between two dates — say, how many days since your birth — subtract their JDNs. The calendar system doesn't matter.
This is why astronomers adopted it in the 19th century, and why every serious astrology library uses it as the universal time coordinate.
Why it exists
A date in the Gregorian calendar doesn't map cleanly to a date in the Chinese lunisolar calendar, or the Julian calendar, or the Islamic calendar. They all count time differently.
JDN gives you one number that works across all of them. Convert any date from any system to JDN first, and arithmetic becomes trivial.
Computing it
Given year Y, month M, and day D in the Gregorian calendar, the Julian Day Number is:
INT() means floor — round down to the nearest integer. For June 21, 2026 (Y=2026, M=6, D=21), this yields JDN 2,461,213.
In code, the same calculation looks like this:
function toJDN(year: number, month: number, day: number): number {
return (
367 * year
- Math.floor(7 * (year + Math.floor((month + 9) / 12)) / 4)
+ Math.floor(275 * month / 9)
+ day
+ 1721013
);
}Adding time of day
The Julian Day Number counts whole days. The Julian Date (JD) adds the time of day as a fraction — measured from noon, because that's when Scaliger's epoch began.
For a birth at 14:00 UTC: fraction = (14 − 12) / 24 = 0.0833. The full Julian Date is 2,461,213.0833.
That fraction is what allows planetary position calculations to 0.001 arcsecond precision. A planet moves fast enough that 4 minutes of error shifts it by roughly 1 arcminute — enough to change your Rising sign.
Why Orime uses it
Orime's planetary calculations use astronomy-engine, a pure-JS library that handles Julian Date conversion internally inside its AstroTime object. The line T = time.tt / 36525 — Julian centuries since J2000.0 — is in our source code, one layer down.
Orime never constructs a JDN directly. But it runs on one. The library abstracts it; the foundation is still there. The same is true of virtually every astrology app you've used.
In this guide