Ba Zi Chart Calculator: Choose the Right Input Path
To generate a ba zi chart, choose Gregorian or Chinese lunar, enter the date, recorded local time, sex and birthplace, then press Calculate my chart. Set the time zone and calculation options under Time & location settings. The result starts with your dated Year, Month, Day and Hour cards and Day Master; marking the time unknown leaves the Hour unfilled.
Pick controls that match the record you have
Use the Gregorian path when the source is a civil Gregorian date. Use Chinese lunar only when you have that calendar’s year, month, day and leap-month status. If the clock time is missing, choose the unknown checkbox in either calendar mode rather than borrowing the example’s time. Source: getInput, renderMonths and normalize.
| Field | Choose | What to do |
|---|---|---|
| Calendar | Gregorian or Chinese lunar | Use the calendar printed on the source record. Lunar mode reveals the leap-month option. |
| Year / Month / Day | Separate date controls | In lunar mode months are numbered; they are not Gregorian month names. |
| Birth time | 24-hour time, or unknown checkbox | For the known example, 3:20pm = 15:20. The unknown path disables this field. |
| Sex | Male or Female | The existing engine uses this selector for the traditional luck-cycle direction. |
| Birthplace | Listed city or Custom location | A preset fills Time zone and Longitude. Custom location lets you enter them. |
| Time zone / Longitude | Inside Time & location settings | Use a valid IANA zone and east-positive / west-negative longitude. |
| Use true solar time | Explicit ON or OFF | The worked paths use OFF. This reproduces one convention rather than declaring it correct for every school. |
| Day boundary / Repeated DST hour | Explicit advanced choices | The examples use Midnight and First occurrence. See the rule guide for boundary-sensitive records. |
The time field uses a 24-hour clock: for this example, 3:20pm is 15:20; 3:20am would be 03:20. These are two different time entries. Do not enter the converted UTC time in the birth-time field; this form expects the local recorded clock time and resolves the named zone afterward. Source: time validation and resolveLocal.
Editing the form does not submit it
After we entered 1988, October 12, 15:20 and London, the unsubmitted screen still showed EXAMPLE and the old result subtitle 1990-06-15 · 12:00 · Asia/Shanghai. Press Calculate my chart after completing a path. An edited form and an older result can be on screen together; the old example is not a calculation of the new fields. This is a recorded interface observation, not a claim about other calculators. Source: input-path test ledger and UI observations; unchanged form and engine code.
Selecting London, UK filled Europe/London and longitude −0.12574 in our test; the solar-time checkbox remained ON until we explicitly turned it OFF. For a reproducible run, open Time & location settings and inspect that checkbox. Choosing a city does not mean every calculation convention was reset. These are the preset’s stored city-centre coordinates, not a precise birth address. Source: input-path test ledger and UI observations; unchanged form and engine code.
Path G: a Gregorian record with a known time
Choose Gregorian, enter the date and 24-hour time, select Sex and Birthplace, then open Time & location settings. For the exact teaching run, use Year 1988, October, Day 12, 15:20, Male and London, UK; set solar time OFF and Day boundary to Midnight. Press Calculate my chart. These settings are a reproducible example, not a suggested birth record. Source: input-path test ledger and UI observations.
Submitting path G, Gregorian October 12, 1988 at 15:20 in London with solar time OFF and the midnight boundary, produced Wu Chen / Ren Xu / Geng Zi / Jia Shen. All three paths below use the same synthetic teaching record, not a real person. Sex is Male, longitude is −0.12574, and the repeated-hour choice is First occurrence. The complete settings are preserved in the linked ledger rather than hidden behind a screenshot. Source: input-path test ledger and UI observations; unchanged form and engine code.
The first calculated G result replaced the example subtitle with 1988-10-12 · 15:20 · Europe/London and displayed Geng Metal with eight visible characters: Wood 1, Fire 0, Earth 3, Metal 2 and Water 2. These are the screen’s visible position counts for this run, not percentages or a favorable-element prescription. The labels identify what a new user will actually find after pressing the button; deeper interpretation belongs to the separate analysis guide. Source: input-path test ledger and UI observations; unchanged form and engine code.
Path L: a Chinese lunar source record
Choose Chinese lunar before entering that source’s year, numbered month and day. Check the leap-month box only when the source identifies a leap month. This site uses the bundled library’s Chinese lunar calendar convention, not a different local lunar calendar for every country. If the source calendar is unclear, resolve it before submitting; a selector cannot identify an unlabeled record. Sources: normalization code; calendar library and conversion API.
Switching G to Chinese lunar retained year 1988, month 10 and day 12 in the controls; it changed the month labels to numbered lunar months and revealed the leap-month checkbox without converting those three input values. Re-enter the date from the lunar source after changing that radio button. Do not assume the switch has transformed an already-entered Gregorian birthday. The next test uses an independently checked equivalent lunar date. Source: input-path test ledger and UI observations; unchanged form and engine code.
For path L we re-entered Chinese lunar year 1988, Month 9, Day 2, with leap month unchecked; the result returned Wu Chen / Ren Xu / Geng Zi / Jia Shen and explicitly appended Converted from Chinese lunar date to the Gregorian subtitle. The local calendar library converts this particular non-leap lunar record to October 12, 1988. Time, place and conventions remain unchanged, so G and L resolve to the same 14:20 UTC instant in this test. That equivalence belongs to these supplied dates and this library’s declared Chinese-lunar convention. Source: input-path test ledger and UI observations; unchanged form and engine code.
Path U: a record without the clock time
Select I don’t know my birth time after entering the date. Keep Sex, Birthplace and the advanced settings attached to the result. The calculator can produce a partial view, but it cannot supply an evidentially confirmed hour from the checkbox. Follow the missing-time guide for uncertainty beyond this interface walkthrough. Source: unknown-time input and result handling.
Checking I don’t know my birth time disabled the time field while its old value, 15:20, remained visible in the form. The checkbox, not the old disabled digits, determines which path is submitted. There is no need to delete the stale number or enter a guessed noon. The next observation records the actual result after submission. Source: input-path test ledger and UI observations; unchanged form and engine code.
After submitting path U, the subtitle said 1988-10-12 · Time unknown · Europe/London, the supplied pillars were Wu Chen / Ren Xu / Geng Zi, and the Hour card showed Unknown and Not inferred instead of Jia Shen. The result also displayed the three-pillar warning and disclosed its noon reference. This is an intentionally partial output, not a recovered birth hour. The dedicated missing-time guide explains the sampling limits; here the useful action is choosing the right input path. Source: input-path test ledger and UI observations; unchanged form and engine code.
Compare the three completed paths
| Input path | Year | Month | Day | Hour |
|---|---|---|---|---|
| G · Gregorian 1988-10-12 | Wu Chen | Ren Xu | Geng Zi | Jia Shen |
| L · Lunar 1988-09-02 | Wu Chen | Ren Xu | Geng Zi | Jia Shen |
| U · Gregorian, hour unknown | Wu Chen | Ren Xu | Geng Zi | Not supplied |
The example links open the existing calculator with synthetic fields prefilled and the selected path calculated. They contain no real person’s details. To use your own record, replace those values and press Calculate again. The complete inputs, output pairs and interface observations are in the test ledger; no new chart engine or upload service was added.
Why does the London example resolve to 14:20 UTC?
The tested zone resolves October 12, 1988 at 15:20 local to 14:20 UTC, a 60-minute offset. IANA’s Europe data places London on the GB-Eire rules in that period, with the summer offset ending on an October Sunday on or after the 23rd. This date is before that transition. The actual result comes from the runtime’s built-in zone data; historical data can change with software updates. Sources: IANA Europe source; input-path test ledger and UI observations.
Where should I go after the result appears?
Use the Bazi chart input-verification guide to check whether a written date was entered correctly. Use the 4 pillar calculator to examine declared clock and day-boundary conventions. Use calculator and analysis to trace the generated reading. For the column names themselves, see chart anatomy. This page’s task is choosing and submitting the right form path.
The three-minute time check
Enter the same synthetic date, recorded time, time zone and longitude, check the historical UTC offset and UTC instant, then toggle solar time and compare the Day and Hour results with the linked eight-case ledger.
- Time zone. Keep the recorded local clock time and select the birth-place zone for that date. Record the historical UTC offset and resolved UTC instant. Time-zone reference.
- Daylight saving. Check whether the named zone has already included the seasonal offset; do not subtract it again. US DST reference and our tested offset pairs.
- Solar time. Hold the inputs fixed, switch solar time off and on, then record the pillar clock and Day/Hour results. In this calculator that switch changes the selected clock, not the resolved UTC instant. Solar-time formula and our measured cases.
Read the worked answer and eight-case ledger ↗Find related time-setting pages ↗