最近在工作的時候需要實現這麼乙個功能,根據日曆控制項中選擇的日期,計算出這一天是本年度的第幾周,是星期幾,關於獲取星期幾,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...