關於計算某一天是星期幾,是一年中的第幾周的小結

2022-05-05 06:30:09 字數 2082 閱讀 1195

最近在工作的時候需要實現這麼乙個功能,根據日曆控制項中選擇的日期,計算出這一天是本年度的第幾周,是星期幾,關於獲取星期幾,c#中已經提供了方法dayofweek(),下面看看怎麼計算第幾周:

///

/// 取指定日期是一年中的第幾周 

///

/// 給定的日期

/// 數字 一年中的第幾周

public int weekofyear(datetime dtime)

//return weeknum ;

public int weekofyear(datetime dtime)       

{          //dtime為傳進來的日期

int weeknum = 1;   //預設的週數從1開始        

datetime firstdate = datetime.parse(dtime.year.tostring() + "-1" + "-1");    //獲取這一年的1月1號       

dayofweek firstweek = firstdate .dayofweek;    //將1月1號作為第一周,不管是不是周一        

for (int i = (int)firstweek + 1; i <= dtime.dayofyear; i = i + 7)           

{          //(int)firstweek + 1表示第一周還剩的天數,dtime.dayofyear當前時間是本年中的第幾天,七天為一週期

weeknum = weeknum + 1;           

return weeknum ;

上面的寫法是本人自己寫的,不過這個演算法是把每年的1月1號作為起始點開始計算的,而不是將每年的第乙個周一或週日作為起始點的,下面有乙個改進的方法將每年的第乙個週日作為起始點的,即如果1月1日不是週日,則不記為1,從下個週日開始計算,這個方法是根據他人的方法改編的

public int weekofyear(datetime dtime)  

datetime dtmfisrtday =datetime.parse(dtime.year.tostring() + "-1" + "-1");  //獲取這一年的1月1號

string strweek = dtmfisrtday.dayofweek.tostring().tolower(); ;

int intweek = 0;

switch (strweek)

case "saturday":

intweek = 7;

break;

case "friday":

intweek = 6;

break;

case "thursday":

intweek = 5;

break;

case "wednesday":

intweek = 4;

break;

case "tuesday":

intweek = 3;

break;

case "monday":

intweek = 2;

break;

case "sunday":

intweek = 1;

break;

intweek = 8 - intweek;//第一周剩餘的天數,為什麼用8,因為在我的方法中週六是7,週日是開始1.   

int intoutput = 0;//要輸出的週數   

int intnow = dtime.dayofyear; //當前是本年度的第幾天

intoutput = intnow / 7; //計算出大概週數

int intloop = intnow % 7;  

intloop = intloop - intweek;

if (intloop > 0) //說明所選擇的日期不足一周

// 所選擇的日期不足一周這樣就會出現少算一周的情況,這時候就要對intoutput的值進行修正。

intoutput = intoutput + 1;

else

intoutput = intoutput + 0;

return intoutput;

求某一天是星期幾

蔡勒 zeller 公式 歷史上的某一天是星期幾?未來的某一天是星期幾?關於這個問題,有很多計算公式 兩個通用計算公式和一些分段計算公式 其中最著名的是蔡勒 zeller 公式。即w y y 4 c 4 2c 26 m 1 10 d 1 公式中的符號含義如下,w 星期 c 世紀 1 y 年 兩位數 ...

java如何計算某一天是星期幾

如何計算某一天是星期幾?蔡勒 zeller 公式 歷史上的某一天是星期幾?未來的某一天是星期幾?關於這個問題,有很多計算公式 兩個通用計算公式和一些分段計算公式 其中最著名的是蔡勒 zeller 公式。即w y y 4 c 4 2c 26 m 1 10 d 1 公式中的符號含義如下,w 星期 c 世...

計算某一天是這一年中的第幾天

問題描述 定義乙個結構體變數 包括年月日 計算該日在本年中是第幾天?樣例輸入 2016 12 31 樣例輸出 366 includebool isleapyear int year 判斷這一年是否是閏年 int calday int year 計算天數 struct day int monthday...