이 문서가 다루는 것
간지와 삼재는 주기 규칙으로 계산하고, 24절기는 날짜 단위 근사식과 예외 보정표를 사용합니다. 음력 변환과 손없는날은 1900~2050년 음력 대조표를 사용합니다. 같은 조회 날짜에는 같은 계산 결과가 나오지만, 지원 범위와 오차는 계산별로 다릅니다. 홈과 만세력의 첫 화면에는 서버에서 만든 공통 날짜 값이 포함되며, 브라우저에서 한국 표준시의 오늘 값으로 맞춥니다. 도구에서 선택한 날짜 등의 개인 입력을 운세 계산용 서버나 외부 API로 보내지 않습니다.
계산을 직접 한다는 말은 곧 틀릴 수도 있다는 뜻입니다. 그래서 이 문서에는 무엇을 어떻게 계산하는지뿐 아니라, 무엇과 대조해 검증했고 어떤 해에 어긋나서 보정했는지, 그리고 아직 계산하지 않는 값이 무엇인지까지 함께 적었습니다. 회귀 테스트 스크립트가 앵커 값을 매번 다시 확인하도록 해 두었고, 어긋난 사례는 감추지 않고 보정표에 남깁니다. 계산이 정확하다는 주장보다, 어디까지 확인했고 어디부터는 확인하지 못했는지를 밝히는 편이 더 정직하다고 생각합니다.
간지(干支) — 60갑자와 율리우스 적일
간지는 천간(天干) 열 글자와 지지(地支) 열두 글자를 하나씩 짝지어 만드는 이름표입니다. 10과 12의 최소공배수가 60이므로 짝은 60개에서 한 바퀴를 돌고, 이것을 60갑자라 부릅니다. 해에 붙이면 세차(歲次), 달에 붙이면 월건(月建), 날에 붙이면 일진(日辰)입니다.
해의 간지는 어렵지 않습니다. 서기 연도에서 4를 뺀 값을 10과 12로 나눈 나머지가 각각 천간과 지지가 됩니다. 서기 4년이 갑자년이기 때문입니다. 예를 들어 2026년은 2026 − 4 = 2022이고, 2022를 10으로 나눈 나머지가 2라 천간은 병(丙), 12로 나눈 나머지가 6이라 지지는 오(午)입니다. 그래서 병오년입니다.
날의 간지는 이렇게 간단하지 않습니다. 그레고리력에는 4년마다의 윤년, 100년마다의 예외, 400년마다의 예외가 겹쳐 있어 두 날짜 사이에 며칠이 흘렀는지를 날짜 문자열만 보고는 셀 수 없기 때문입니다. 그래서 먼저 날짜를 율리우스 적일(Julian Day Number, JDN)로 바꿉니다. JDN은 기원전 4713년의 어느 날부터 하루에 하나씩 붙여 온 통짜 정수라, 두 값의 차이가 곧 경과 일수가 됩니다. 변환에는 Fliegel–Van Flandern 알고리즘을 씁니다.
율리우스 적일 변환 (Fliegel–Van Flandern)
a = floor((14 - month) / 12)
y = year + 4800 - a
m = month + 12a - 3
JDN = day + floor((153m + 2) / 5) + 365y
+ floor(y/4) - floor(y/100) + floor(y/400) - 32045남은 일은 기준점 하나를 정하는 것입니다. 운세한잔은 1949년 10월 1일을 갑자일로 잡았습니다. 이 날의 JDN은 2433191이고, 여기에 49를 더해 60으로 나누면 나머지가 정확히 0이 됩니다. 즉 60갑자의 0번인 갑자에 딱 떨어집니다. 이후로는 어떤 날짜든 (JDN + 49) % 60 으로 0에서 59 사이의 번호를 얻고, 그 번호를 10으로 나눈 나머지가 천간, 12로 나눈 나머지가 지지입니다. 앵커 하나만 맞으면 그 앞뒤 수천 년이 원리적으로 어긋나지 않는 구조입니다.
명리에서 한 해의 경계는 1월 1일이 아니라 입춘입니다. 그래서 세차를 구할 때는 먼저 그 해의 입춘 절입일을 계산한 뒤, 날짜가 입춘 이전이면 전년도 간지를 씁니다. 2026년을 예로 들면 2월 3일까지는 아직 을사년이고, 입춘인 2월 4일부터 병오년이 됩니다. 새해 첫날에 띠가 바뀌는 것으로 알고 계신 분이 많지만, 사주를 볼 때 쓰는 경계는 입춘 쪽입니다.
| 천간 | 음양 | 오행 | 오방색 |
|---|---|---|---|
| 갑 (甲) | 양(陽) | 목(木) | 청(靑) |
| 을 (乙) | 음(陰) | 목(木) | 청(靑) |
| 병 (丙) | 양(陽) | 화(火) | 적(赤) |
| 정 (丁) | 음(陰) | 화(火) | 적(赤) |
| 무 (戊) | 양(陽) | 토(土) | 황(黃) |
| 기 (己) | 음(陰) | 토(土) | 황(黃) |
| 경 (庚) | 양(陽) | 금(金) | 백(白) |
| 신 (辛) | 음(陰) | 금(金) | 백(白) |
| 임 (壬) | 양(陽) | 수(水) | 흑(黑) |
| 계 (癸) | 음(陰) | 수(水) | 흑(黑) |
해마다 붙는 색깔 이름은 이 표에서 나옵니다. 2026년이 ‘붉은 말의 해’로 불리는 것은 천간 병(丙)의 오방색이 적(赤)이고 지지 오(午)의 띠가 말이기 때문입니다. 2024년의 ‘푸른 용’도 같은 방식입니다. 갑(甲)이 청(靑)이고 진(辰)이 용이라 청룡이 됩니다. 신비한 작명이 아니라 표에서 두 글자를 읽어 붙인 결과입니다.
24절기 — 수성공식과 보정표
24절기는 태양이 황도를 15도씩 지날 때마다 붙인 이름입니다. 달의 움직임과 무관한 태양력이라 양력 날짜가 해마다 비슷한 자리에 옵니다. 정확한 절입 시각은 천문 계산이 필요합니다. 이 사이트는 날짜를 근사식으로 구하므로, 공식 날짜와의 대조 및 보정이 필요합니다.
운세한잔은 수성공식(壽星公式)을 씁니다. 절기마다 정해진 상수 하나와 윤년 보정만으로 그 해의 절입일을 구하는 방식입니다.
수성공식 — 절입일 계산
D = floor(Y × 0.2422 + C) - L Y = 연도의 뒤 두 자리 (2026 → 26) C = 절기별 · 세기별 상수 (입춘 21세기 = 3.87) L = floor(Y / 4) (윤년 보정) ※ 1 · 2월 절기는 L = floor((Y - 1) / 4)
1월과 2월의 절기(소한·대한·입춘·우수)에 예외를 두는 이유는 간단합니다. 그 해의 2월 29일을 아직 지나지 않았기 때문에 윤년 보정을 한 해 늦춰 적용해야 합니다. C 상수는 20세기용과 21세기용이 따로 있고, 24개 절기마다 값이 다릅니다.
2026년 입춘을 실제로 넣어 보겠습니다. Y = 26, 입춘의 21세기 상수 C = 3.87, 1·2월 절기이므로 L = floor(25 / 4) = 6입니다. 26 × 0.2422 = 6.2972이고 여기에 3.87을 더하면 10.1672, 내림하면 10, 여기서 6을 빼면 4가 나옵니다. 2026년 입춘은 2월 4일입니다.
수성공식은 근사식이며, 한국표준시의 절입일과 하루 어긋날 수 있습니다. 실제 절입이 자정 근처에 있으면 시간대도 날짜 차이의 원인이 됩니다. 확인한 연도의 공식 날짜와 비교해 필요한 보정만 적용하며, 모든 연도의 정확도를 검증한 것은 아닙니다.
2026년과 2027년은 우주항공청 공식 월력요항의 24절기를 각각 전수 대조했습니다. 근사식에 2026년 망종, 2027년 상강·입동의 하루 보정을 적용한 뒤 48개 날짜가 모두 일치합니다. 별도로 2028년 24개 날짜는 KASI 선행 달력자료와 일치함을 확인했지만, 이를 확정 월력요항 검증으로 표시하지 않습니다. 2029년 추분은 미국 해군천문대(USNO)의 UTC+9 계산값인 9월 23일과 대조한 단일 표본입니다.
| 연도 | 절기 | 근사식 계산 | 발표값 | 보정 |
|---|---|---|---|---|
| 2026 | 망종 (芒種) | 6월 5일 | 6월 6일 | +1일 |
| 2027 | 상강 (霜降) | 10월 23일 | 10월 24일 | +1일 |
| 2027 | 입동 (立冬) | 11월 7일 | 11월 8일 | +1일 |
2026년 우수는 2월 19일, 2028년 하지는 6월 21일, 2029년 추분은 9월 23일이 한국표준시의 날짜입니다. 이 세 항목에 잘못 적용됐던 −1일 보정을 제거했습니다. 검증한 날짜는 회귀 검사에 고정해 같은 오류를 방지합니다. 확인한 차이가 하루였다는 사실이 다른 모든 연도에도 오차가 하루 이내라는 보장은 아닙니다.
직접 확인한 대조 자료
- 2026년 공식 월력요항 — 우주항공청 공고 제2025-0044호
- 2027년 공식 월력요항 — 우주항공청 공고 제2026-0078호
- KASI 2028년 선행 달력자료 — 공식 발표 전 자료
- USNO 2029년 절기 계산 — UTC+9, 추분 단일 표본
음력 변환 — 1900~2050년 대조표
음력은 달의 삭망 주기를 따르기 때문에 공식 하나로 깔끔하게 풀리지 않습니다. 한 달이 29일일 때도 30일일 때도 있고, 열두 달로는 태양년을 채우지 못해 몇 해에 한 번씩 윤달을 끼워 넣습니다. 그래서 운세한잔은 근사식 대신 1900년부터 2050년까지 151년치를 담은 대조표를 씁니다.
표는 한 해를 17비트 정수 하나로 압축합니다. 하위 네 비트는 그 해의 윤달 번호이고 0이면 윤달이 없다는 뜻입니다. 그 위 열두 비트는 1월부터 12월까지 각 달이 30일인 대월(大月)인지 29일인 소월(小月)인지를 나타내고, 마지막 한 비트는 윤달 자체가 30일인지를 나타냅니다. 기준일은 양력 1900년 1월 31일로, 이 날이 음력 1900년 1월 1일입니다. 양력 날짜를 넣으면 기준일부터의 경과 일수를 세어 표를 훑어 내려가며 음력 연·월·일과 윤달 여부를 얻습니다.
표 방식의 위험은 값이 하나만 틀려도 그 뒤가 전부 밀린다는 데 있습니다. 그래서 회귀 테스트가 설날(음력 1월 1일) 여섯 건과 추석(음력 8월 15일) 일곱 건, 모두 열세 건의 앵커를 실행할 때마다 다시 확인합니다. 여기에 더해 하루씩 이동할 때 음력 날짜도 반드시 하루씩만 움직이는지, 윤달의 위치가 표와 맞는지, 표 밖의 연도를 넣으면 값을 만들어 내지 않고 빈 값을 돌려주는지도 함께 검사합니다.
실제로 이 검증에서 오류를 찾은 적이 있습니다. 1978년과 1996년 두 해의 월 대소 비트가 어긋나 있었고, 증상은 두 해의 추석이 음력 8월 16일로 나오는 것이었습니다. 원인을 확인하려고 Meeus 천문 알고리즘으로 삭(朔) 시각을 독립적으로 계산해 대조했습니다. 1996년 9월의 삭은 한국 시간으로 자정에서 여덟 시간 넘게 떨어져 있어, 경계 근처의 애매한 판정이 아니라 표 값 자체의 오류임이 분명했습니다. 두 해 모두 총일수는 그대로라 인접 연도의 경계는 움직이지 않았습니다. 앵커가 최근 연도에만 몰려 있어 수십 년 전 구간의 오류를 놓치고 있었던 것이라, 이후 앵커를 1978년까지 넓혔습니다.
손없는날은 이렇게 얻은 음력 날짜에서 판정합니다. 음력 날짜의 끝자리가 9 또는 0인 날, 그러니까 9·10·19·20·29·30일이 손없는날입니다. 전통적으로 ‘손(損)’이라 불리는 방위신이 열흘을 주기로 동·서·남·북을 이틀씩 돌다가 남은 이틀은 하늘로 올라가 사람의 일에 관여하지 않는다고 보았기 때문입니다. 판정 자체는 나머지 연산 한 줄이지만, 그 앞의 음력 변환이 정확해야 결과가 맞습니다. 손없는날 계산의 신뢰도는 사실상 음력표의 신뢰도입니다.
삼재 판정 — 십이지 삼합
삼재는 자신의 띠를 기준으로 12년에 한 번, 3년 동안 조심하라고 전해지는 민간 신앙입니다. 계산 규칙 자체는 명확합니다. 열두 띠를 네 칸씩 건너뛰며 세 개씩 묶은 삼합(三合) 그룹이 기준이고, 그룹마다 삼재가 드는 세 해가 정해져 있습니다.
세 해는 순서대로 들삼재(첫해)·눌삼재(둘째 해)·날삼재(셋째 해)라 부릅니다. 들어오는 해, 머무는 해, 나가는 해라는 뜻입니다. 코드는 네 그룹의 대응 관계를 표로 만들어 두고, 조회 연도의 지지가 그 목록의 몇 번째에 있는지로 단계를 정합니다.
| 삼합 그룹 | 해당 띠 | 삼재가 드는 해 |
|---|---|---|
| 신자진 (申子辰) | 원숭이 · 쥐 · 용 | 호랑이 · 토끼 · 용 해 (인묘진) |
| 사유축 (巳酉丑) | 뱀 · 닭 · 소 | 돼지 · 쥐 · 소 해 (해자축) |
| 인오술 (寅午戌) | 호랑이 · 말 · 개 | 원숭이 · 닭 · 개 해 (신유술) |
| 해묘미 (亥卯未) | 돼지 · 토끼 · 양 | 뱀 · 말 · 양 해 (사오미) |
예를 들어 1995년생은 돼지띠이므로 해묘미 그룹에 속하고, 삼재 구간은 뱀·말·양 해인 2025·2026·2027년입니다. 2026년은 그 두 번째 해이므로 눌삼재에 해당합니다. 회귀 테스트가 이 사례를 포함해 어떤 출생 연도를 넣어도 삼재 구간이 반드시 연속한 3년으로 나오는지, 12년마다 다시 돌아오는지를 확인합니다.
다만 삼재는 앞의 간지·절기·음력과 성격이 다릅니다. 간지와 절기는 규칙이 정해진 역법 계산이라 맞고 틀림을 말할 수 있지만, 삼재가 실제로 불행을 가져온다는 주장에는 확인된 근거가 없습니다. 저희가 보장하는 것은 ‘전해지는 규칙대로 정확히 계산했다’는 것까지이며, 그 규칙의 예언력까지는 아닙니다. 삼재에 들었다는 결과를 보셨다면 겁을 내기보다, 한 해를 조금 더 조심스럽게 시작하는 계기 정도로 받아들이시길 권합니다.
운세 문장 선택 — 결정론적 해시 시드
여기서부터는 역법이 아니라 콘텐츠의 영역입니다. 오늘의 운세나 띠별 운세가 보여 주는 문장은 저희가 미리 써 둔 문장 풀에서 고른 것입니다. 어떤 문장을 쓰느냐만큼 중요한 것이 ‘어떻게 고르느냐’입니다.
오늘의 운세처럼 날짜를 사용하는 도구는 같은 입력과 같은 조회일에 같은 문장을 표시하도록 시드를 고정합니다. 주간·월간·신년운세에는 각 조회 기간이, 이름 궁합에는 이름에 따른 계산 규칙이 적용됩니다. 직접 고르는 타로는 섞은 덱에서 카드를 선택하므로 별도의 선택 규칙을 사용합니다.
일간 운세에서 사용하는 기본 절차는 두 단계입니다. 입력값과 날짜 문자열을 구분자로 이어 붙인 뒤 FNV-1a 32비트 해시로 정수를 만들고, 이를 mulberry32 유사난수 생성기의 시드로 씁니다. 같은 시드에서는 같은 수열이 나오므로 문장과 부가 결과를 재현할 수 있습니다. 다른 도구의 입력 조합과 점수 산식은 해당 도구 설명을 따릅니다.
결정론적 선택 절차
seed = fnv1a(입력값 + "|" + "YYYY-MM-DD") rng = mulberry32(seed) 문장 = pool[floor(rng() × pool.length)] 별점 = 문장의 tone 값에서 유도
일간 운세는 브라우저의 날짜가 바뀌면 새 날짜의 결과를 계산합니다. 주간·월간 도구는 해당 기간 동안 고정됩니다. 직접 고르는 타로는 Math.random으로 섞은 덱에서 고른 카드가 결과가 되므로 재셔플 후 결과가 달라질 수 있습니다. 카드의 정·역방향은 날짜·선택 순서·카드 ID의 해시로 결정하고, 뽑은 카드와 방향을 공유 주소에 남겨 같은 결과를 다시 볼 수 있게 합니다. 오늘의 타로는 날짜별 후보 3장이 고정되는 별도의 도구입니다.
이 방식에는 부수 효과가 하나 더 있습니다. 결과를 만드는 데 필요한 정보가 입력값과 날짜뿐이므로, 운세 계산을 위해 방문자를 식별하거나 이전 방문을 기억할 필요가 없습니다. 이름·생년월일·출생연도의 원문은 브라우저에서만 계산되며 서버·공유 URL·Google 분석·광고 요청에 포함되지 않습니다.
문장 풀은 다음과 같이 준비돼 있습니다. 모든 문장은 한국어와 영어 두 벌로 작성했고, 확장분은 기존 문장과 소재나 문형이 겹치지 않도록 따로 써서 합쳤습니다.
| 문장 풀 | 개수 | 구성 |
|---|---|---|
| 오늘의 운세 총평 | 200 | 기본 50 + 확장 150. great · good · soso · caution 4단계 |
| 금전 · 애정 · 건강 · 직장 | 각 100 | 항목마다 기본 30 + 확장 70, 합계 400 |
| 띠별 운세 | 720 | 12띠 × (오늘 · 주간 · 월간) × 20 |
| 별자리 운세 | 720 | 12별자리 × (오늘 · 주간 · 월간) × 20 |
| 타로 카드 | 78 | 메이저 22 + 마이너 56, 정방향·역방향 해석 별도 |
이 표의 일간·띠별·별자리 문장은 2,040개(200 + 400 + 720 + 720)입니다. 이름 궁합·신년운세와 타로 정·역방향 해석 등을 포함한 콘텐츠 검증 범위의 총 항목 수는 2026년 9월 29일 기준 2,500개입니다. 두 숫자는 집계 범위가 다릅니다. 타로 카드 아트는 SVG와 CSS로 제공하며, 이 계산·이미지 경로는 선택적 Google 통계·광고 요청과 별개입니다.
한계와 주의
정확도를 말하려면 못 하는 것부터 밝히는 편이 낫습니다. 현재 확인된 한계는 다음과 같습니다.
절기 시각은 계산하지 않습니다
24절기는 날짜만 제공하고 절입 시각(시·분)은 구하지 않습니다. 시주(時柱)를 따지거나 절입 당일의 앞뒤를 시간 단위로 가려야 하는 경우에는 이 사이트의 값만으로는 부족합니다.
공식 역법은 한국천문연구원 기준입니다
저희 계산값은 참고용입니다. 공휴일, 절기 시각, 대체공휴일처럼 공적으로 확인해야 하는 정보는 한국천문연구원(KASI)이 발표한 역서를 따라 주시기 바랍니다.
음력 조회 범위는 1900~2050년입니다
대조표가 다루는 범위 밖의 날짜는 추정치를 만들어 내지 않고 빈 값을 반환합니다. 화면에서는 음력 칸이 비어 보입니다. 없는 값을 그럴듯하게 채우는 것보다 비워 두는 편이 정직하다고 판단했습니다.
시간대는 도구별로 확인해야 합니다
일간 운세와 오늘의 타로의 날짜 키는 브라우저의 현지 날짜를 사용합니다. 만세력·절기 계산의 한국 역법 기준과는 구분됩니다. 해외 또는 시간대가 다른 기기에서는 날짜가 달라 결과가 다를 수 있습니다.
운세 해석은 오락용입니다
계산이 정확하다는 것과 해석이 맞는다는 것은 전혀 다른 이야기입니다. 간지·절기·음력은 규칙이 정해진 역법이라 정답을 말할 수 있지만, 그 값에서 성격이나 미래를 읽어 내는 해석에는 과학적 근거가 없습니다. 건강·재정·법률처럼 중요한 결정은 반드시 해당 분야 전문가와 상의하시기 바랍니다.
자주 묻는 질문
계산 결과가 다른 만세력 사이트와 하루 다를 때가 있습니다. 왜 그런가요?
절기 계산은 날짜 단위 근사식이라 실제 절입 시각이 자정 가까운 해에는 하루 차이가 날 수 있습니다. 만세력의 연주 경계는 입춘이며, 출생연도만 입력하는 띠 도구는 별도의 단순화 규칙을 씁니다. 만세력의 오늘 날짜는 한국 표준시, 일간 운세의 날짜 키는 브라우저 현지 날짜를 사용하므로 도구별 기준도 확인해야 합니다. 불일치가 있으면 페이지와 조회 날짜를 알려 주세요.
외부 API를 쓰지 않으면 값이 부정확하지 않나요?
정확도는 API를 쓰느냐가 아니라 무엇과 대조했느냐로 결정됩니다. 간지는 율리우스 적일이라는 확정된 정수 체계 위에서 나머지 연산만 하므로 앵커 하나만 맞으면 원리적으로 어긋나지 않습니다. 절기는 근사식이라 오차가 생길 수 있어 한국천문연구원 발표값과 대조해 보정하고 있고, 음력은 널리 쓰이는 대조표를 채택하되 설날·추석 앵커 13건으로 회귀 테스트를 겁니다. 실제로 그 테스트가 1978년과 1996년의 표 오류를 잡아냈습니다. 다만 대조하지 않은 구간까지 완벽하다고 주장하지는 않습니다.
같은 생년월일이면 다른 사람과 운세가 똑같이 나오나요?
네, 같은 도구에 같은 입력을 넣으면 같은 날에는 같은 결과가 나옵니다. 시드가 입력값과 날짜로 정해지는 의도한 설계입니다. 결과를 만드는 데 계정이나 서버 저장이 필요하지 않으며, 이름·생년월일·출생연도의 원문은 기기 안에서 계산한 뒤 서버·URL·Google 요청에 포함하지 않습니다.
새로고침하면 운세가 바뀌나요?
일간 운세는 같은 입력과 날짜라면 같고 주간·월간 결과는 해당 기간을 따릅니다. 직접 고르는 타로는 다시 섞고 선택하면 달라질 수 있으나, 뽑은 카드와 방향을 담은 공유 링크를 새로고침하면 같은 결과를 봅니다.
절기 보정표는 어떤 자료로 검증했나요?
2026·2027년 공식 월력요항의 48개 날짜를 전수 대조해 2026년 망종과 2027년 상강·입동에 각각 하루를 더하는 보정을 적용했습니다. 보정 후 48개가 모두 일치합니다. 2028년은 KASI 선행 달력자료 24개를 별도로 대조했고, 2029년은 USNO의 UTC+9 추분 날짜 한 건을 확인했습니다. 공식 확정자료와 선행자료·단일 표본은 구분하며, 검증하지 않은 연도의 정확도를 보장하지 않습니다.
입력한 생년월일이나 이름은 어디에 저장되나요?
이름·생년월일·출생연도의 원문은 저장하지 않습니다. 운세와 만세력 계산 모듈은 브라우저에서 실행되고 외부 API를 호출하지 않으며, 원문 입력값은 서버·주소창·공유 링크·Google 요청에 포함되지 않습니다. Google Analytics·AdSense가 별도로 처리할 수 있는 방문·기기·광고 정보와 쿠키는 개인정보처리방침에 설명합니다.
본 콘텐츠는 오락용입니다. 중요한 결정은 전문가와 상담하세요.