首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 依年月日計算星期幾 — 基姆拉爾森公式

     編輯:關於C語言

演算法:基姆拉爾森公式

W = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) mod 7

  • d:日、m:月、y:年。
  • 關鍵調整:將 1 月視為上一年的 13 月,2 月視為上一年的 14 月。例:2004-01-10 → 代入 2003-13-10 計算。
  • 結果 W:1=一、2=二、...、6=六、0=日 (或 7=日視實作調整)。

C# 實現


string CalculateWeekDay(int y, int m, int d)
{
    if (m == 1) { m = 13; y--; }
    else if (m == 2) { m = 14; y--; }

    int w = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7;

    string[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
    return weeks[w];
}

呼叫範例


Label1.Text = CalculateWeekDay(2004, 12, 9); // 輸出:星期四

替代方案

.NET 內建 DateTime.DayOfWeek 已完整實現且經過測試:


DayOfWeek dow = new DateTime(2004, 12, 9).DayOfWeek; // Thursday
string chinese = new[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }[(int)dow];

實務開發**強烈建議直接使用 DateTime.DayOfWeek**,除非有特殊教學或無框架環境需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved