[C#] 如何用計算當天的地支和沖的生肖?

2024-07-16

在中國傳統的命理學中,地支與生肖之間有著密切的關聯,每一個年份對應到一個地支(例如,鼠年對應“子”,牛年對應“丑”等等),並且這些地支之間會有“沖”的概念。每一個地支都有對應的沖地支,這種關係對於命理學、風水學等領域非常重要。

今天,我們將使用 C# 來計算某一日期的地支以及這個地支所對應的沖生肖。這個過程基於中國的天干地支系統,其中12個地支(子、丑、寅、卯等)會每12年循環一次,
並且每個地支有一個固定的沖生肖,所以其實每一天都會沖到一個生肖


這篇文章是透過 ChatGPT 幫忙生成的,因為突然在系統裡面要用到,雖然是透過生成,但是按照 GPT 現在的智商
我也是除錯了許多次,接下來就是直接給程式碼吧

static readonly string[] EarthlyBranches = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" }; static readonly string[] Zodiacs = { "鼠", "牛", "虎", "兔", "龍", "蛇", "馬", "羊", "猴", "雞", "狗", "豬" }; static readonly int[] SixClashIndex = { 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5 }; public static void CalculateZodiacClash(DateTime date) { int earthlyIndex = GetEarthlyBranchIndex(date); string earthlyBranch = EarthlyBranches[earthlyIndex]; int clashIndex = SixClashIndex[earthlyIndex]; string clashZodiac = Zodiacs[clashIndex]; Console.WriteLine($"日期: {date:yyyy-MM-dd}"); Console.WriteLine($"地支: {earthlyBranch}"); Console.WriteLine($"沖生肖: {clashZodiac}"); } private static int GetEarthlyBranchIndex(DateTime date) { DateTime baseDate = new DateTime(1900, 1, 1); int daysSinceBase = (date - baseDate).Days; return (daysSinceBase + 10) % 12; // 修正偏移值 } static void Main(string[] args) { DateTime date1 = new DateTime(2025, 7, 21); CalculateZodiacClash(date1); DateTime date2 = new DateTime(2026, 5, 11); CalculateZodiacClash(date2); DateTime date3 = new DateTime(2027, 2, 19); CalculateZodiacClash(date3); } // Result /* 日期: 2025-07-21 地支: 卯 沖生肖: 雞 日期: 2026-05-11 地支: 酉 沖生肖: 兔 日期: 2027-02-19 地支: 巳 沖生肖: 豬 */

result:
日期: 2025-07-21
地支: 卯
沖生肖: 雞
日期: 2026-05-11
地支: 酉
沖生肖: 兔
日期: 2027-02-19
地支: 巳
沖生肖: 豬

目前比對幾筆資料是對的,如果有時間再來繼續寫這系列


當麻許的碎念筆記 2014 | Donma Hsu Design.