C#实现的根据日期得到今天是星期几

算法如下: 

基姆拉尔森计算公式: 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 

代码如下: 

根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);)#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).ToStrin g()); 

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.getDat e()-date.getDay()+1)) 

var Monday=FD.getYear()+"-"+(FD.getMonth()+1)+"-"+FD.g etDate()//一周的第一天 

var LD=new Date(date.getYear(),(date.getMonth()),(date.getDat e()-date.getDay()+7)) 

var Sunday=LD.getYear()+"-"+(LD.getMonth()+1)+"-"+LD.g etDate() //一周的最后一天 

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)); 



本文来自CSDN博客,转载请标明出处:http:///zhongzhengfeng/archive/2008/1 2/22/.aspx 

本文来自CSDN博客,转载请标明出处:http:///fxb1984/archive/2009/10/28/47 .aspx
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值