힌두교 축제 티티 규칙
출처: Dev.to
저는 지역 달력 페이지를 손으로 코딩한 축제 날짜에서 엔진이 계산한 날짜로 옮기던 중, 2026년 브라이 두즈(Bhai Dooj)가 11월 11일로 표시되는 것을 발견했습니다. 몇몇 공개된 판장(panchang)과 비교해 보니 두 곳 모두 11월 10일이라고 했습니다.
축제가 하루 차이로 틀렸던 것이었습니다. 해결 방법은 두 줄이었으며, 그 두 줄은 17세기 산스크리트 법전에서 이 질문이 나올 것이며 미리 답을 제시하고 있다는 내용과 일치했습니다.
티티(tithi)는 하루가 아니다.
티티는 달이 태양으로부터 12도씩 이동하는 동안을 의미합니다. 달의 궤도는 타원형이므로 그 지속 시간은 일정하지 않습니다. 가장 빠를 때는 약 20시간, 가장 느릴 때는 27시간 정도이며 평균은 23시간 37분 정도입니다. 거의 절대 태양일과 깔끔하게 맞아떨어지지 않습니다.
따라서 티티는 대부분의 경우 두 개의 그레고리 날짜에 걸쳐 있습니다. 하루 중 어느 시점에 시작해 밤을 지나 다음 날의 어느 시점에 끝납니다.
축제가 언제 열리는지를 계산하는 사람에게 이것이 핵심 문제입니다. 브라이 두즈는 카르티카(Kartika) 쉬클라 두티야(Dwitiya) 날에 지켜집니다. 2026년 11월에 두티야는 화요일 10일 오후 2시 IST에 시작해 수요일 11일 오후 3시 53분에 끝납니다. 두 날 모두 두티야가 포함되지만, 어느 날 전체에 걸친 것은 아닙니다. 어느 날이 브라이 두즈일까?
산스크리트 법 전통에는 이 질문을 위한 용어가 있습니다. 칼라-비압티(kala‑vyapti), 시간‑지배. 축제는 하루 중 지정된 시간 창을 가지고 있으며, 그 창 안에 티티가 존재(vyapta)해야 그 날에 의식을 행할 수 있습니다. 이 창들은 임의가 아니라 각각 축제의 핵심 행위가 일어나는 시간대와 매핑됩니다.
- 디왈리(Diwali)는 프라도시(pradosh), 즉 해가 진 후 96분에 암바바시(Amavasya)가 존재할 때 지켜집니다. 라크시 푸자(Lakshmi Puja)가 황혼에 열리기 때문입니다.
- 마하 시바라트리(Maha Shivaratri)는 니시타(nishita), 즉 자정 무렵에 차투르다시(Chaturdashi)가 존재할 때 지켜집니다. 의식이 밤샘 경계이기 때문입니다.
- 람 나바미(Ram Navami)는 마드야흐나(madhyahna), 즉 낮의 3/5 구간에 나바미(Navami)가 겹칠 때 지켜집니다. 람이 정오에 태어났다고 전해지기 때문입니다.
- 브라이 두즈는 아파라흐나(aparahna), 즉 낮의 4/5 구간(오후 중후반)에 두티야가 존재할 때 지켜집니다. 의식이 누이가 방문해 틸락을 바르는 것이기 때문입니다.
우리 코드에는 브라이 두즈에 대한 이 레이어가 없었습니다.
축제 정의는 다음과 같았습니다:
{ masa: 'kartika', paksha: 'shukla', tithi: 2, slug: 'bhai-dooj',
type: 'major', category: 'festival' }
muhurta 규칙이 없었습니다. 필드가 없을 경우 엔진은 가장 일반적인 일출 규칙을 기본값으로 사용합니다. 대부분의 축제에선 이 기본값이 맞지만, 브라이 두즈에는 맞지 않았습니다.
화요일 일출(델리 기준 06:40 IST) 시점에는 두티야가 아직 시작되지 않았습니다. 수요일 일출 시점에는 두티야가 진행 중이었습니다. 일출 규칙은 수요일을 선택했고, 엔진은 11월 11일을 반환했습니다.
아파라흐나 규칙은 다른 질문을 합니다. 화요일 오후에 두티야가 있었나요? 네, 오후 2시부터 일몰까지 있었습니다. 수요일 오후에도 있었나요? 네, 오후 3시 53분까지 있었습니다. 두 날 모두 아파라흐나 창에 두티야가 포함됩니다. 따라서 동점자를 가릴 추가 규칙이 필요합니다.
고전 법학자들은 동점자를 푸르바-비압니(purva‑vyapini)(첫째 날 우선), 파라-비압니(para‑vyapini)(둘째 날 우선), 우바야-비압니(ubhaya‑vyapini)(양일 타협)로 구분했습니다. 각 주요 축제마다 중세 법전 어딘가에 그 규정이 정리되어 있습니다.
브라이 두즈에 대한 권위 있는 출처는 1790년에 완성된 카시나타 우파드야야(Kashinatha Upadhyaya)의 *다르마신두(Dharmasindhu)*입니다. 카시나타는 마하라슈트라 출신의 법학자로, 그의 논문은 북인도 대부분에서 축제 시기를 정하는 후기 고전 표준이 되었으며, 현재 출판되는 대부분의 판장도 표지에 그를 인용합니다. 그의 규칙은 “두 후보일 중 첫 번째 날의 아파라흐나 시간에 두티야가 존재한다면, 두티야가 어느 정도 겹치든 상관없이 그 첫 번째 날에 축제를 지킨다”는 내용입니다.
푸르바-비압니, 아파라흐나에 적용.
우리 엔진의 동점자 처리 로직은 이와 비슷했지만 정확히 일치하지 않았습니다. pradosh와 nishita를 첫째 날 우선 규칙에 하드코딩했는데, 이는 가장 흔한 푸르바-비압니 창이었기 때문입니다. 아파라흐나는 목록에 없었습니다. 두 날 모두 아파라흐나 겹침이 있었을 때 엔진은 기본값으로 “겹치는 시간이 더 긴 날”을 선택했습니다. 수요일이 132분, 화요일이 80분이라 수요일이 승리했습니다.
수정은 다음 두 줄이었습니다:
- { ..., type: 'major', category: 'festival' }
+ { ..., type: 'major', category: 'festival', muhurtaRule: 'aparahna' }
- if (['pradosh', 'nishita'].includes(rule) || overlap1 >= overlap2) {
+ if (['pradosh', 'nishita', 'aparahna'].includes(rule) || overlap1 >= overlap2) {
정의에 한 필드가 추가됐고, 동점자 배열에 한 문자열이 추가됐습니다.
이제 엔진은 11월 10일을 반환합니다. 출판된 판장도 11월 10일을 말하고, 우리 마을 사당 게시판에 날짜를 적어두는 어른들 역시 항상 11월 10일이라고 했습니다. 다르마신두 역시 그렇게 기록하고 있습니다.
이 수정의 근본적인 의미는 우리 코드베이스의 축제 정의가 단순히 설정 데이터가 아니라, 중세 산스크리트 법학을 다른 표기법으로 옮긴 전사에 가깝다는 점입니다. muhurta 필드가 없고 동점자 리스트가 불완전하면 실제 잘못된 것은 전사 자체입니다. 구절은 변하지 않았고, 코드는 그 구절을 따라잡는 역할을 합니다.
다르마신두는 수세기 동안 서가에 놓여 있었습니다. 이틀 반 세기가 하루 차이로 틀린다는 것은 긴 시간입니다.
https://dekhopanchang.com?utm_source=devto&utm_medium=article&utm_campaign=festival-rules