Day Pillar

Calculation conventions

Practitioners disagree about several of the rules below. Where they do, this page says which side the engine takes and what the alternative gives, so a chart that differs from another site can be traced to a stated choice rather than argued about.

This page is generated from the module the calculator runs on. It cannot describe a different engine from the one that cast your chart.

The year changes at Li Chun (立春), not at Chinese New Year

The year pillar advances at the exact instant of Li Chun, the first solar term. In 2024 that instant was 2024-02-04 16:27:07 China Standard Time. A birth one minute earlier belongs to the previous year pillar.

BaZi is a solar system. The twelve month pillars are defined by the twelve major solar terms (節), which are positions of the sun on the ecliptic, not lunar months. Chinese New Year is a lunisolar date and can fall weeks either side of Li Chun; using it would put the year pillar out of step with the month pillar it must agree with.

Solar terms are compared against the birth instant, not its true solar time

The year and month pillars are decided by taking the absolute instant of birth and comparing it to the solar-term instant. True solar time is NOT used for this comparison. The hour pillar, and the day pillar, are taken from true solar time at the birth longitude — the day pillar because the late-zi day boundary (see LATE_ZI) is itself a statement about true solar midnight, not civil midnight.

A solar term happens at one moment for the whole world. True solar time is a local sun position, not a timezone conversion, so comparing a true-solar clock reading against a solar-term table mixes two frames. Doing so produces the wrong YEAR pillar for births near a term. Worked example: a New York birth at 2024-02-04 03:30 EST is 16:30 China Standard Time and therefore after Li Chun (16:27:07), giving 甲辰. Its true solar time is 03:20, and a chain that fed that into the term comparison would return 癸卯 — wrong by a whole year. The day pillar is the opposite case: it is deliberately computed from true solar time, because whether a late-night birth belongs to the current day or the next is a question about the sun, not about the civil clock.

The hour pillar uses true apparent solar time, including the equation of time

Clock time is corrected in four steps: the historical UTC offset in force on that date at that place (from the IANA time zone database, including historical daylight saving), then longitude at four minutes per degree from the zone’s reference meridian, then the equation of time for that instant. The result is true apparent solar time, and the hour branch is read from it.

The hour branch is a statement about where the sun actually was. Two corrections are needed and most calculators apply only the first. Longitude alone gives Local Mean Time — a fictional even-paced sun. The equation of time, which reaches ±14 to ±16 minutes, is the difference between that fiction and the real sun. Near a two-hour boundary those minutes decide the branch.

A birth between 23:00 and 23:59 keeps the current day pillar

The zi hour (子時) spans 23:00–00:59 true solar time. This engine uses the convention that the late half (23:00–23:59) keeps the day pillar of the day it is still in, and only the hour pillar belongs to zi.

The day boundary is a genuine disagreement between schools, not a settled fact. This engine states which side it takes and lets you see the other.

Where schools disagree

The opposing convention rolls the day pillar forward at 23:00. For a birth on 1990-06-15 at 23:30 in Hong Kong, this engine gives the day pillar 辛亥; the rolling convention gives 壬子. Both are defensible. A chart that differs from another site by exactly this is a school difference, not an error.

An unknown birth time produces three pillars, never a guessed fourth

If the birth time is not known, no hour pillar is produced and no true-solar-time correction is shown, because that correction cannot be computed without a real time to correct. The year and month pillars are still derived from the absolute instant of the given date. The day pillar uses that same date directly, without the late-zi true-solar adjustment described in SOLAR_TERM_FRAME — an unknown hour means it is also unknown whether the birth fell in the late-zi window, so that correction cannot honestly be applied either way.

Defaulting an unknown hour to midnight, or to any other clock reading, would silently manufacture a zi-hour pillar sitting on the day boundary — the single most consequential position in the chart — and would let an internal reference time leak into the day-pillar correction as if it were a real fact about the birth. A missing pillar is honest; an invented one is not.

What this engine does not claim to handle

Births before 1970 are served but flagged. Ambiguous local times (the hour repeated when daylight saving ends) and non-existent local times (the hour skipped when it begins) are detected and reported rather than silently resolved.

IANA time zone data before 1970 is sparser and less reliable, and many places had no legal standard time at all. Rather than pretend to a precision the underlying data does not support, those charts carry a visible caveat.

Engine defaults in force: late-zi convention keeps the current day; solar-term instants read in Asia/Shanghai; births from 1970 onward carry no time-zone data caveat.

See these rules running against real births in the verification corpus, or cast a chart and follow its correction chain against the conventions above.