3. 60갑자 순환과 달력 변환
60갑자(甲子~癸亥)는 천간·지지 최소공배로 만들어진 시간 좌표계입니다. 연·월·일·시 모두 이 60주기로 표현할 수 있습니다.
3‑① 순환 메커니즘
- 천간 10개를 번호
0~9
, 지지 12개를0~11
로 두고 같은 순서로 1칸씩 전진 → 60쌍 후 다시 甲子(0,0) 귀환. - 수학식 :
n번째 갑자 = (n mod 10, n mod 12)
- 기준점 : 서기 1984‑02‑04 입춘 00:00 = 甲子 시작.
3‑② 60갑자 미니 표 (1~30)
# | 갑자 | 음독 | 오행 | 음/양 |
---|---|---|---|---|
1 | 甲子 | 갑자 | 木·水 | 양·양 |
2 | 乙丑 | 을축 | 木·土 | 음·음 |
… | … | … | … | … |
30 | 癸巳 | 계사 | 水·火 | 음·음 |
전체 60표는 부록 PDF 다운로드.
3‑③ 서기 날짜 → 갑자 3‑단계 변환
- 절기 보정 : 생일이 입춘 전이면 전년도로 간주.
- 기준 연도 차이 계산 :
Δ = 목표연도 − 1984
. - 모듈로 매핑
천간 =(Δ mod 10)
, 지지 =(Δ mod 12)
→index = (Δ mod 60) + 1
.
*1984 = 甲子 1번. 예) 2025 → Δ = 41 → index = 42 = 乙巳(을사).
3‑④ JS 예시 코드 (연도 변환)
// ES Modules
const stems = ['갑','을','병','정','무','기','경','신','임','계'];
const branches = ['자','축','인','묘','진','사','오','미','신','유','술','해'];
export function solarYearToGanji(year, afterIpchun=true){
let y = year - 1984 + (afterIpchun ? 0 : -1);
const stem = stems[(y % 10 + 10) % 10];
const branch = branches[(y % 12 + 12) % 12];
return `${stem}${branch}`;
}
// console.log(solarYearToGanji(2025)); // 을사
쎄하다 API v1 엔드포인트 /ganzhi?date=YYYY-MM-DD
로 동일 결과 반환.
3‑⑤ 응용 예시
- 콘텐츠 마케팅 : “甲子 픽” 스페셜 에디션— 60주기 회귀 연도에 상품 출시.
- HR 채용 : 지원자 생년 갑자 분포 통계로 팀 세대 간 다이나믹 분석.
- UX 캘린더 : 양력·음력·갑자 3중 캘린더 위젯으로 절기·길일 한눈에 표시.
다음 학습: Ⅳ‑4 은장간·12운성·장생 도해