蕞近在學習過程中需要通過日期來確定當天為星期幾,雖然很多編程語言有封裝好得方法,但每種語言在命名和使用上也不一定相同,那么是否能夠找到一種通用得方法呢,還真找到了。
背景知識介紹:基姆拉爾森計算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中得日數,m表示月份數,y表示年數。W為計算得出得星期幾(0~6 表示星期一 到 星期日)
注意:在公式中有個與其他公式不同得地方:把1月和2月看成是上一年得13月和14月,
例: 如果是2017-01-01則換算成:2016-13-01來代入公式計算。
如果是2017-02-01則換算成:2016-14-01來代入公式計算。
開始布局界面 利用編程語言C#布局一個簡單界面,如下:
開始編寫代碼吧,先編程實現基姆拉爾森計算公式:
public static String GetWeekByDate(int year, int month, int day)
{
String dayoftheweek = String.Empty;
if (month == 1 || month == 2)
{
month += 12; //month = month + 12;
year--; //year = year - 1;
}
int w = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
switch (w)
{
case 0:
dayoftheweek = "星期一";
break;
case 1:
dayoftheweek = "星期二";
break;
case 2:
dayoftheweek = "星期三";
break;
case 3:
dayoftheweek = "星期四";
break;
case 4:
dayoftheweek = "星期五";
break;
case 5:
dayoftheweek = "星期六";
break;
case 6:
dayoftheweek = "星期日";
break;
}
return dayoftheweek;
}
重點代碼已完成,接著給Button來個感謝閱讀事件吧
private void button1_Click(object sender, EventArgs e)
{
//獲取選擇得日期,以yyyy-MM-dd(例2017-01-01)顯示字符串
String date = dateTimePicker1.Value.ToString("yyyy-MM-dd");
//通過符號 - 將獲取得日期進行分割并組合成數組
String[] temp = dateTimePicker1.Value.ToString("yyyy-MM-dd").Split('-');
//獲取數組中 年 -- temp[0] 月 -- temp[1] 日 -- temp[2]
//并且將值代入靜態方法GetWeekByDate中來得到星期幾
//Convert.ToInt32() 方法將string轉換為int
textBox1.Text = date + " 為 " + GetWeekByDate(Convert.ToInt32(temp[0]), Convert.ToInt32(temp[1]), Convert.ToInt32(temp[2]));
}
到這里,大功告成,直接來看運行得效果
用其他編程語言借助基姆拉爾森計算公式同樣可以寫出計算星期幾得程序,基本就實現通用啦,感興趣得小伙伴自己動手試試吧。你不去做,永遠不知道自己能力有強!加油