標籤:des style blog http io os 使用 java ar
演算法如下:
基姆拉爾森計算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日數,m表示月份數,y表示年數。注意:在公式中有個與其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。
但是在測試的時候發現有點出入,就是公式存在一點問題,得稍做修改:
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 +1
代碼如下:
#region 根據年月日計算星期幾(Label2.Text=CaculateWeekDay(2004,12,9);)
/// <summary>
/// 根據年月日計算星期幾(Label2.Text=CaculateWeekDay(2004,12,9);)
/// </summary>
/// <param name="y">年</param>
/// <param name="m">月</param>
/// <param name="d">日</param>
/// <returns></returns>
public static string CaculateWeekDay(int y,int m, int d)
{
if(m==1) m=13;
if(m==2) m=14;
int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;
string weekstr="";
switch(week)
{
case 1: weekstr="星期一"; break;
case 2: weekstr="星期二"; break;
case 3: weekstr="星期三"; break;
case 4: weekstr="星期四"; break;
case 5: weekstr="星期五"; break;
case 6: weekstr="星期六"; break;
case 7: weekstr="星期日"; break;
}
return weekstr;
}
#endregion
在開發網站的過程中,如開發新聞網站、論壇、聊天室等,都需要擷取當前系統日期,本執行個體介紹如何擷取系統日期並將系統日期用不同的格式顯示出來。執行個體運行結果7.1所示。
擷取當前系統日期並將其轉化為短日期格式的代碼如下:
Label1.Text = System.DateTime.Now.ToShortDateString();
擷取當前系統日期並將其轉化為長日期格式的代碼如下:
Label2.Text = System.DateTime.Now.ToLongDateString();
注意:DateTime對象中的Now屬性可以用DateTime對象中的Today屬性代替,DataTime.Now屬性與DataTime.Today屬性都是用來擷取當前系統時間的。
在開發遊戲類網站時,往往需要將玩家的闖關時間記錄下來,設立熱門排行榜,增強遊戲的趣味性。本執行個體將會介紹如何擷取當前系統時間並將其格式化。執行個體運行結果7.2所示。
擷取當前系統時間並將其轉化為短時間格式的代碼如下:
Label1.Text = System.DateTime.Now.ToShortTimeString();
擷取當前系統日期並將其轉化為長日期格式的代碼如下:
Label2.Text = System.DateTime.Now.ToLongTimeString();
一些網站的首頁會將當前系統日期和時間都顯示出來,以美化網站。本執行個體介紹如何同時獲得系統當前日期和時間。執行個體運行結果7.3所示。
同時獲得系統當前日期和時間的代碼如下:
Label1.Text = DateTime.Now.ToString();
在本執行個體中,主要實現的是使用DateTime結構的DayofWeek屬性來擷取當前日期是星期幾,並將返回指定日期是星期幾的英文單詞轉化為相應的漢字。代碼如下:
public static string dt;
public static string week;
protected void Button1_Click(object sender, EventArgs e)
{
//擷取當前日期是星期幾
dt = DateTime.Today.DayOfWeek.ToString();
//根據取得的英文單詞返回漢字
switch (dt)
{
case "Monday":
week ="星期一";
break ;
case "Tuesday":
week = "星期二";
break;
case "Wednesday":
week = "星期三";
break;
case "Thursday":
week = "星期四";
break;
case "Friday":
week = "星期五";
break;
case "Saturday":
week = "星期六";
break;
case "Sunday":
week = "星期日";
break;
}
//利用TextBox文字框顯示當前日其為星期幾
TextBox1.Text = week;
}
}
本執行個體主要是擷取指定年份中的天數,首先使用DateTime結構的Year屬性來取得年份,然後根據DateTime結構的IsLeapYear方法來判斷取得年份是否為閏年,如果為閏年,則顯示“366天”,否則顯示“365天”。代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
//判斷是否是閏年
if (DateTime.IsLeapYear(Convert.ToInt32(DateTime.Now.Year.ToString())))
{
//如果是閏年
TextBox1.Text = "366";
}
else
{
//如果不是閏年
TextBox1.Text = "365";
}
}
本執行個體主要擷取當前月的天數,使用DateTime結構的Year和Month屬性取得當前日期所在的年和月,然後在switch語句中根據不同的年份和月份返回指定月份的天數。代碼如下:
public static int year;
public static int month;
public static int days;
protected void Button1_Click(object sender, EventArgs e)
{
year = DateTime.Now.Year;
month = DateTime.Now.Month;
//得到當前月的天數
switch (month)
{
case 1:
days = 31;
break;
case 2:
if (DateTime.IsLeapYear(year))
{
//閏年二月為29天
days = 29;
}
else
{
//不是閏年,二月為28天
days = 28;
}
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
}
TextBox1.Text = days.ToString();
}
本執行個體主要實現“取得當前日期的前一天”功能,使用了DateTime結構的AddDays方法,在指定的DateTime執行個體的值上加上“-1”天取得所要的結果。代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = DateTime.Now.AddDays(-1).ToString();
}
在DataTime結構中,與AddDays方法實現功能相類似的方法如表7.1所示。
表7.1 將日期格式化為指定格式常用方法
方 法 名 稱
說 明
Add
將指定的TimeSpan的值加到執行個體的值上
AddHours
將指定的小時數加到執行個體的值上
AddMilliseconds
將指定的毫秒數加到執行個體的值上
AddMinutes
將指定的分鐘數加到執行個體的值上
AddMonths
將指定的月份數加到執行個體的值上
AddSeconds
將指定的秒數加到執行個體的值上
AddYears
將指定的年份加到執行個體的值上
TimeSpan對象表示時間間隔或期間,按正負天數、小時數、分鐘數、秒數以及秒的小數部分進行度量。在本執行個體中,首先定義了兩個時間dateTime1和dateTime2,並分別為其賦值,然後定義了一個TimeSpan對象,並將dateTime1和dateTime2之間的時間間隔賦給TimeSpan對象。代碼如下:
DateTime dateTime1 = DateTime.Parse(DateTime.Now.AddSeconds(30).ToString());
DateTime dateTime2 = DateTime.Parse(DateTime.Now.ToString());
TimeSpan timeSpan = dateTime1 - dateTime2;
TextBox1.Text =timeSpan.ToString();
//-----------------------------------------------------------------------------------------------------------
一周從周日算起
DateTime mDatetime=new DateTime(year,1,1);//year為要求的那一年
int firstweekfirstday=Convert.ToInt32(mDTime.DayOfWeek);//一年中第一天是周幾
days=(double)(6-firstweekfirstday);
DateTime secondweekfisrtday=mDTime.AddDays(days);第二周一
fisrtday=MDatetime.AddDays(week*7);//第N周第一天
lastday=MDatetime.AddDays(week*7+6);//第N周最後一天
一周從周一算起
DateTime mDatetime=new DateTime(year,1,1);//year為要求的那一年
int firstweekfirstday=Convert.ToInt32(mDTime.DayOfWeek);//一年中第一天是周幾
days=(double)(7-firstweekfirstday);
DateTime secondweekfisrtday=mDTime.AddDays(days);第二周一
fisrtday=MDatetime.AddDays(week*7);//第N周第一天
lastday=MDatetime.AddDays(week*7+6);//第N周最後一天
javascript:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
function showDateCount(year,weekNum){
var date=new Date(year,0,(7*weekNum));
var FD=new Date(date.getYear(),(date.getMonth()),(date.getDate()-date.getDay()+1))
var Monday=FD.getYear()+"-"+(FD.getMonth()+1)+"-"+FD.getDate()//一周的第一天
var LD=new Date(date.getYear(),(date.getMonth()),(date.getDate()-date.getDay()+7))
var Sunday=LD.getYear()+"-"+(LD.getMonth()+1)+"-"+LD.getDate() //一周的最後一天
alert(year+"年第"+weekNum+"周是"+Monday+"至"+Sunday)
}
</SCRIPT>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<input type="text" value="2007" size="20" name="year">年<input type="text" name="weekNum" value="30" size="20">
<input type="button" name="GO" value="Click" onClick="showDateCount(year.value,weekNum.value)">
</BODY>
</HTML>
c#
//monthCalendar1是日曆控制項
System.Globalization.ChineseLunisolarCalendar c = new ChineseLunisolarCalendar();
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
DateTime MySelectDate = e.End;
txt_nonglidate.Text = string.Format(CultureInfo.InstalledUICulture, "{0}-{1}-{2}", c.GetYear(MySelectDate), c.GetMonth(MySelectDate), c.GetDayOfMonth(MySelectDate));
}
C#實現的根據日期得到今天是星期幾