🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Ganzhi Calendar (干支计算)

by @wingchiu

Calculate Chinese lunar calendar dates with Heavenly Stems (天干) and Earthly Branches (地支). Use when generating Chinese calendar tables, checking 黄历, or conve...

Versionv1.0.0
Downloads577
Installs1
TERMINAL
clawhub install ganzhi-calendar

📖 About This Skill


name: chinese-calendar description: Calculate Chinese lunar calendar dates with Heavenly Stems (天干) and Earthly Branches (地支). Use when generating Chinese calendar tables, checking 黄历, or converting Gregorian dates to 干支 (stem-branch) dates for year/month/day.

Chinese Calendar Calculator

Usage

Run the script to generate weekly calendar:

python3 scripts/calendar.py

Output format:

丙午(马年) 🐎
| Date | Weekday | Nongli | 月天干地支 | 日天干地支 |
| ---- | ------- | ------ | ---------- | ---------- |
| 3月6日 | 周五 | 农历正月十八 | 辛卯月 | 己卯日 |

Calculation Method

Reference Date

  • 1983-02-05 = 甲子日 (calibrated against verified sources)
  • Day stem-branch: (days since reference) % 60 → stem = pos % 10, branch = pos % 12
  • Day Calculation

    delta = (date - 1983-02-05).days
    stem_idx = delta % 10
    branch_idx = delta % 12
    day_stem_branch = STEMS[stem_idx] + BRANCHES[branch_idx]
    

    Month Calculation

    Month branches: 正月=寅, 二月=卯, 三月=辰...
    month_branch_idx = (month + 1) % 12
    month_stem_idx = (year_stem_idx * 2 + month) % 10
    month_stem_branch = STEMS[month_stem_idx] + BRANCHES[month_branch_idx]
    

    Year Calculation

    cycle_pos = (year - 4) % 60
    year_stem_idx = cycle_pos % 10
    year_branch_idx = cycle_pos % 12
    year_stem_branch = STEMS[year_stem_idx] + BRANCHES[year_branch_idx]
    

    Constants

    STEMS = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
    BRANCHES = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
    ZODIAC = {
        '子': '鼠', '丑': '牛', '寅': '虎', '卯': '兔',
        '辰': '龙', '巳': '蛇', '午': '马', '未': '羊',
        '申': '猴', '酉': '鸡', '戌': '狗', '亥': '猪'
    }
    

    💡 Examples

    Run the script to generate weekly calendar:

    python3 scripts/calendar.py
    

    Output format:

    丙午(马年) 🐎
    | Date | Weekday | Nongli | 月天干地支 | 日天干地支 |
    | ---- | ------- | ------ | ---------- | ---------- |
    | 3月6日 | 周五 | 农历正月十八 | 辛卯月 | 己卯日 |