일상의 잡다한

축문을 쓰는데 도움이 되는 코드 작성

눈길에발자욱 2024. 4. 22. 21:36

# 필요한 라이브러리 설치
!pip install korean-lunar-calendar

# 천간 지지
heavenly_stems = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
earthly_branches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']

from datetime import date
from korean_lunar_calendar import KoreanLunarCalendar

def calculate_60_ganji(year, month, day):
    """
    그레고리력 날짜에 기반한 60갑자 계산 함수
    """
    input_date = date(year, month, day)
    reference_date = date(2024, 4, 9)  # 기준일 '계묘(癸卯)'
    reference_heavenly_stem = 9
    reference_earthly_branch = 3

    day_difference = (input_date - reference_date).days

    heavenly_stem_index = (reference_heavenly_stem + day_difference) % 10
    earthly_branch_index = (reference_earthly_branch + day_difference) % 12

    ganji_cycle = heavenly_stems[heavenly_stem_index] + earthly_branches[earthly_branch_index]
    return ganji_cycle

def get_60_ganji_for_lunar_date(year, month, day, leap_month):
    """
    음력 날짜에 해당하는 60갑자를 계산하는 함수
    """
    calendar = KoreanLunarCalendar()
    calendar.setLunarDate(year, month, day, leap_month)
    solar_date = calendar.SolarIsoFormat().split('-')
    return calculate_60_ganji(int(solar_date[0]), int(solar_date[1]), int(solar_date[2]))

try:
    # 입력 받기
    year = int(input("음력 연도를 입력하세요: "))
    month = int(input("음력 월을 입력하세요: "))
    day = int(input("음력 일을 입력하세요: "))
    leap_month = input("윤달이면 '네'를, 아니면 그냥 엔터를 치세요: ").strip().lower() == '네'

    # 입력받은 연도에 해당하는 일진
    print(f"{year}년의 60갑자: {get_60_ganji_for_lunar_date(year, 1, 1, False)}")

    # 입력받은 음력 월의 첫째 날에 대한 일진
    print(f"{year}년 {month}월 첫째 날의 60갑자: {get_60_ganji_for_lunar_date(year, month, 1, leap_month)}")

    # 입력받은 음력 날짜에 해당하는 일진
    print(f"{year}년 {month}월 {day}일의 60갑자: {get_60_ganji_for_lunar_date(year, month, day, leap_month)}")
except ValueError:
    print("잘못된 입력입니다. 연도, 월, 일을 정확히 입력해주세요.")
except Exception as e:
    print(f"예상치 못한 오류가 발생했습니다: {e}")

 

 

 

 

 

 

 

이 코드는 음력 날짜를 입력받아 해당 날짜의 60갑자 (60甲子)를 계산하는 프로그램입니다. 60갑자는 동아시아 전통에서 시간을 나타내는 방식 중 하나로, 천간(10天干)과 지지(12地支)의 조합으로 이루어진 60가지의 조합을 말합니다. 이 코드는 사용자로부터 음력 연도, 월, 일, 그리고 윤달 여부를 입력받아 해당하는 그레고리력 날짜의 60갑자를 계산합니다.



이 프로그램은 전통적인 동아시아 시간 체계를 기반으로 하며, 특히 음력 날짜에 대한 60갑자를 계산하는 데 유용합니다. 이를 통해 사용자는 특정 음력 날짜가 어떤 60갑자에 해당하는지 쉽게 알아볼 수 있습니다. 

 

파이썬 코드로 작성이 됨

실행시 결과 값이다.

 

이거 3가지만 복사해서 넣으면 더 이상 할 게 없다.

 

아버지가 나를 시키는데 난 그냥 깔딱만 할꺼다.

반응형