在中國傳統的命理學中,地支與生肖之間有著密切的關聯,每一個年份對應到一個地支(例如,鼠年對應“子”,牛年對應“丑”等等),並且這些地支之間會有“沖”的概念。每一個地支都有對應的沖地支,這種關係對於命理學、風水學等領域非常重要。
今天,我們將使用 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
地支: 巳
沖生肖: 豬
目前比對幾筆資料是對的,如果有時間再來繼續寫這系列