사주 · 만세력

계산 기준과 검증 결과

풍지관의 사주 계산은 AI 없이, 전통 규칙과 천문 계산만으로 합니다. 같은 입력이면 언제나 같은 결과가 나옵니다. 다른 만세력과 결과가 다를 때 어디서 갈리는지 알 수 있도록 쓰는 기준을 모두 적었습니다.

1. 네 기둥을 세우는 법

  • 연주 — 해가 바뀌는 때는 설날도 양력 1월 1일도 아닌 입춘 절입 순간입니다. 입춘 전에 태어나면 전해의 간지를 씁니다. 간지 번호는 (사주 연도 − 4) ÷ 60의 나머지입니다.
  • 월주 — 달이 바뀌는 때는 12절(소한·입춘·경칩·청명·입하·망종·소서·입추·백로·한로·입동·대설)의 절입 시각입니다. 월지는 입춘부터 인·묘·진…, 월간은 오호둔(五虎遁: 갑·기년 병인월, 을·경년 무인월, 병·신년 경인월, 정·임년 임인월, 무·계년 갑인월)으로 정합니다.
  • 일주 — 달력 날짜의 율리우스 일수로 60갑자를 돌립니다. 2000년 1월 1일이 무오일입니다. 날짜는 자정(0시)에 바뀝니다. 23시대(자시)만 아래 3번 설정을 따릅니다.
  • 시주 — 2시간씩 12시진(자 23~01시, 축 01~03시 …)이며, 시간은 오서둔(五鼠遁: 갑·기일 갑자시, 을·경일 병자시, 병·신일 무자시, 정·임일 경자시, 무·계일 임자시)으로 정합니다.

2. 절기(절입 시각) 데이터

1899~2101년의 24절기를 태양의 겉보기 황경(장동·광행차 반영)이 15도씩 넘어가는 순간으로 직접 계산해 표(data/saju/solar_terms.php)로 두었습니다. 입춘은 315도, 춘분은 0도입니다. 한국 천문연구원 발표처럼 가장 가까운 분으로 반올림해 쓰고, 출생 시각이 절입과 같은 분이면 절입 이후로 봅니다.

검증결과
한국천문연구원 특일 정보(공공데이터)를 인용한 공개 자료와 대조 — 2021·2025·2026·2027년 27개 절기27건 모두 분 단위 일치 (2021년 입춘 23:59 포함)
외부 만세력 라이브러리 2종(lunar-python, manseryeok)과 4,800여 개 절입 시각 대조1900~2029년은 약 89%가 분 단위까지 같고 나머지는 ±1분(반올림 경계). 2030년 이후는 지구 자전 예측(ΔT)의 불확실성으로 최대 1분 가까이 벌어집니다

절입 시각 3분 이내에 태어나신 경우에는 결과 화면에 경계 안내를 띄웁니다. 먼 미래의 절입은 예측값이므로 2030년 이후 날짜는 참고용입니다.

3. 출생 시각 — 당시 시계를 기준으로

입력하신 시각은 그때 한국의 법정 시계로 보고, 먼저 세계 표준시(UTC)의 한 순간으로 바꾼 뒤 절기와 비교합니다. 한국의 표준시는 몇 차례 바뀌었습니다.

기간표준시
1912.1.1 ~ 1954.3.20UTC+9 (동경 135°)
1954.3.21 ~ 1961.8.9UTC+8:30 (동경 127.5°)
1961.8.10 ~UTC+9
서머타임(+1시간)1948~1951년 · 1955~1960년 · 1987~1988년

IANA 시간대 자료(Asia/Seoul)를 씁니다. 이 서버의 시간대 자료 버전은 0.system입니다. 1912년 이전 출생은 기록이 달라 몇 분 어긋날 수 있고, 시계가 건너뛰거나 되돌려진 시각을 입력하면 알려 드립니다.

시간 보정 (기본은 출생지 경도 보정)

진태양시는 출생지의 실제 태양 위치로 맞춘 시각입니다. UTC + 출생지 경도 ÷ 15시간(서울은 동경 126.98°라서 법정 시각보다 약 32분 늦음)이고, ‘경도 + 균시차’를 고르면 지구 공전 때문에 생기는 ±16분 안팎의 균시차(Spencer 근사식, 오차 ±35초)를 더합니다. UTC에서 바로 환산하므로 1954~61년의 UTC+8:30이나 서머타임도 따로 신경 쓰지 않아도 맞습니다. 연주·월주는 천문 순간으로 정하므로 경도와 무관하고, 일주·시주만 영향을 받습니다.

기본은 ‘출생지 경도 보정’입니다. 국내 만세력 앱 상당수가 서울 기준 약 30분을 빼어 시주를 정하기 때문에 같은 결과가 나오도록 맞추었습니다(예: 05:00 출생은 04:27 로 보아 寅시). 균시차까지 더할지, 법정 시각 그대로 쓸지는 ‘더 보기’에서 고를 수 있고, 선택에 따라 달라지는 경우에는 결과 화면에서 따로 알려 드립니다. 다만 앱마다 보정 분(30분 고정, 32분 등)이 달라 경계 시각 근처에서는 결과가 갈릴 수 있습니다.

4. 자시(23~24시) 처리

설정23시대의 일주23시대의 시주 천간
야자시 (기본)당일다음 날 일간 기준
자정 교체당일당일 일간 기준
자시초 교체다음 날다음 날 일간 기준

23시대에 태어난 경우에만 영향이 있고, 그때는 세 가지 결과를 한 화면에 모두 보여 드립니다.

5. 음력과 윤달

음력표(data/saju/lunar_months.php)는 합삭(새달)과 중기를 천문 계산해 직접 만들었고, 1900~2100년을 지원합니다. 규칙은 한국 음력과 같습니다.

  • 달의 첫날은 합삭이 든 날이며, 날짜는 그 당시 한국 표준시(서머타임 제외)로 정합니다.
  • 동지가 든 달이 11월이고, 중기(우수·춘분·곡우·소만·하지·대서·처서·추분·상강·소설·동지·대한)가 든 달의 번호를 그 중기가 정합니다.
  • 한 11월에서 다음 11월 사이가 13개월이면 중기가 없는 첫 달이 윤달이며 앞 달의 번호를 이어받습니다. 2033년의 윤11월처럼 동지가 든 달 다음에 윤달이 오는 해도 같은 규칙으로 처리합니다.
  • 표준시는 1912년 이전 UTC+8, 1912~1954.3.20 UTC+9, 1954.3.21~1961.8.9 UTC+8:30, 이후 UTC+9입니다. 1912년 이전은 한국천문연구원 음양력 자료와 맞추어 보고 정한 기준입니다(UTC+9로 두면 1903~1911년의 5개월이 어긋납니다).
검증결과
한국천문연구원 음양력 API 기준 외부 자료와 날짜별 대조 — 양력 1900-01-01 ~ 2049-12-31 (54,787일)전부 일치 (윤달 위치·달의 크기 포함, 1,855개월)
2050~2100년한국천문연구원 자료가 없는 구간입니다. 같은 계산을 중국 시간대(UTC+8)로 바꾸면 외부의 천문 계산 자료와 2개월을 뺀 전부가 일치해 계산 자체는 같음을 확인했고, 풍지관은 한국 시간대(UTC+9)로 계산합니다. 그래서 중국 음력과는 26개월이 다릅니다

음력 입력은 윤달 여부를 직접 고르게 합니다. 그 해에 윤달이 있으면 화면이 몇 월인지 알려 드립니다.

6. 십성 · 지장간 · 12운성

십성은 일간과 다른 글자의 오행 관계(같음·내가 생함·내가 극함·나를 극함·나를 생함)와 음양이 같은지 다른지로 정합니다. 지지는 정기(본기) 천간으로 봅니다.

지장간(사령분일, 합 30일)

지지여기중기정기
子 자–壬 임 10일癸 계 20일
丑 축癸 계 9일辛 신 3일己 기 18일
寅 인戊 무 7일丙 병 7일甲 갑 16일
卯 묘–甲 갑 10일乙 을 20일
辰 진乙 을 9일癸 계 3일戊 무 18일
巳 사戊 무 7일庚 경 7일丙 병 16일
午 오丙 병 10일己 기 9일丁 정 11일
未 미丁 정 9일乙 을 3일己 기 18일
申 신戊 무 7일壬 임 7일庚 경 16일
酉 유–庚 경 10일辛 신 20일
戌 술辛 신 9일丁 정 3일戊 무 18일
亥 해戊 무 7일甲 갑 7일壬 임 16일

자·묘·유는 둘, 나머지는 셋이며, 오(午)는 병·기·정 세 글자로 보는 『연해자평』 계통을 따랐습니다. 학파에 따라 오(午)를 기·정 둘로만 보기도 합니다.

12운성

천간별 장생 자리: 甲→亥 · 乙→午 · 丙→寅 · 丁→酉 · 戊→寅 · 己→酉 · 庚→巳 · 辛→子 · 壬→申 · 癸→卯. 양간은 순행, 음간은 역행(양생음사)합니다. 장생·목욕·관대·건록·제왕·쇠·병·사·묘·절·태·양 순서입니다.

공망

일주가 속한 60갑자의 순(旬, 10일)에서 짝을 얻지 못한 두 지지입니다. 예를 들어 갑자순은 술·해가 공망입니다.

7. 대운 · 세운 · 월운

  • 순행·역행 — 양년생 남자·음년생 여자는 순행, 음년생 남자·양년생 여자는 역행합니다. 연간의 음양은 입춘으로 정한 사주 연도의 천간입니다.
  • 대운수 — 순행은 출생 후 다음 절, 역행은 출생 전 직전 절까지의 일수를 3으로 나눕니다(3일=1년, 1일=4개월). 대운수는 반올림한 정수이고, 시작 시점은 년·개월·일로 환산한 정확한 값을 씁니다.
  • 대운 간지 — 월주에서 순행은 다음 간지, 역행은 이전 간지로 10년마다 한 칸씩 갑니다.
  • 세운·월운 — 그 해와 그 달의 간지를 일간 기준 십성으로 나타냅니다. 해는 입춘, 달은 절입에서 바뀝니다.

8. 엔진 검증 결과

대조 내용건수결과
연·월·일·시주 — 절입 전후 1~5분, 자시, 서머타임, 1954~61년 UTC+8:30, 무작위 1900~2100년5,618절입 정각(같은 분 이후 0~1분) 구간을 뺀 4,570건 전부 일치
절입 정각 0~1분 구간1,048연주 30건·월주 245건 차이 — 같은 분을 절입 이후로 보느냐, 초 단위 시각과 비교하느냐의 차이입니다. 풍지관은 분 단위로 반올림한 절입 시각 이후로 봅니다
십성·12운성(천간 십성 2,400, 지지 십성 3,200, 12운성 3,200)800명분전부 일치
대운 방향·첫 두 대운 간지·대운수(년·개월)600600건 모두 일치. 대운 시작의 ‘일’ 환산은 32건이 학파별 환산 차이로 달랐습니다

검증 기준은 외부 만세력(lunar-python)이고, 절기 자체는 한국천문연구원 공공데이터와 따로 대조했습니다. 엔진을 고칠 때마다 이 표본이 자동으로 다시 돌아갑니다(tests/run.php).

풀이 규칙

격국은 자평진전의 방식(월지 지장간 중 천간에 투출한 것, 없으면 정기, 정기가 비견·겁재면 건록·양인·월겁격)으로 가립니다. 신강·신약은 자리별 비중(연간 8·월간 12·시간 12·연지 8·월지 30·일지 15·시지 15)에 지장간 일수를 나누어 일간을 돕는 십성(비견·겁재·인성)의 점수를 합산하며, 55% 이상 신강, 45~55% 중화, 45% 미만 신약입니다. 결과에서 계산표를 모두 볼 수 있습니다. 문구는 rules.csv의 규칙 99개에서 조건이 맞는 것만 골라 이으며, 문장마다 규칙 번호와 출처 고전을 붙입니다. 모두 초안이며 감수 전입니다.

조후용신은 궁통보감의 일간×월지 표(120칸)에서 주용신과 보조 글자를 찾아, 원국의 천간에 드러났는지·지장간에만 있는지·없는지를 판정합니다. 표는 서로 다른 두 정리 자료를 대조해 만들었고, 일치하지 않는 칸(壬일 辰월)은 화면에 그 사실을 밝힙니다. 원문과의 대조는 감수 단계에서 확인합니다.

9. 아직 하지 않는 것

  • 격국·용신·신강 신약, 십성 풀이 — 고전 원문(자평진전·적천수·궁통보감 등)에 근거한 규칙 자료를 감수하며 만든 뒤 붙입니다. AI가 문장을 지어내지 않고, 규칙마다 출처 구절을 달 계획입니다.
  • 신살(천을귀인·도화·역마 등) — 후대에 덧붙은 민속적 요소가 많아 보조 정보로만 다룰 예정입니다.