C实现的按照日期取得今天是星期几.docx
- 文档编号:16053820
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:18
- 大小:20.25KB
C实现的按照日期取得今天是星期几.docx
《C实现的按照日期取得今天是星期几.docx》由会员分享,可在线阅读,更多相关《C实现的按照日期取得今天是星期几.docx(18页珍藏版)》请在冰点文库上搜索。
C实现的按照日期取得今天是星期几
算法如下:
基姆拉尔森计算公式:
W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)mod7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:
在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:
若是是2021-1-10则换算成:
2021-13-10来代入公式计算。
可是在测试的时候发现有点出入,就是公式存在一点问题,得稍做修改:
W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)mod7 +1
代码如下:
#region 按照年月日计算礼拜几(Label2.Text=CaculateWeekDay(2021,12,9);)
///
/// 根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);)
///
/// 年
/// 月
/// 日
///
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属性来获取当前日期是礼拜几,并将返回指定日期是礼拜几的英文单词转化为相应的汉字。
代码如下:
publicstaticstringdt;
publicstaticstringweek;
protectedvoidButton1_Click(objectsender,EventArgse)
{
//获取当前日期是星期几
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天”。
代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
{
//判断是否是闰年
if(DateTime.IsLeapYear(Convert.ToInt32(DateTime.Now.Year.ToString())))
{
//如果是闰年
TextBox1.Text="366";
}
else
{
//如果不是闰年
TextBox1.Text="365";
}
}
本实例主要获取当前月的天数,使用DateTime结构的Year和Month属性取适当前日期所在的年和月,然后在switch语句中根据不同的年份和月份返回指定月份的天数。
代码如下:
publicstaticintyear;
publicstaticintmonth;
publicstaticintdays;
protectedvoidButton1_Click(objectsender,EventArgse)
{
year=DateTime.Now.Year;
month=DateTime.Now.Month;
//获得当前月的天数
switch(month)
{
case1:
days=31;
break;
case2:
if(DateTime.IsLeapYear(year))
{
//闰年二月为29天
days=29;
}
else
{
//不是闰年,二月为28天
days=28;
}
break;
case3:
days=31;
break;
case4:
days=30;
break;
case5:
days=31;
break;
case6:
days=30;
break;
case7:
days=31;
break;
case8:
days=31;
break;
case9:
days=30;
break;
case10:
days=31;
break;
case11:
days=30;
break;
case12:
days=31;
break;
}
TextBox1.Text=days.ToString();
}
本实例主要实现“取得当前日期的前一天”功能,使用了DateTime结构的AddDays方法,在指定的DateTime实例的值上加上“-1”天取得所要的结果。
代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
{
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对象。
代码如下:
DateTimedateTime1=DateTime.Parse(DateTime.Now.AddSeconds(30).ToString());
DateTimedateTime2=DateTime.Parse(DateTime.Now.ToString());
TimeSpantimeSpan=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:
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
functionshowDateCount(year,weekNum){
vardate=newDate(year,0,(7*weekNum));
varFD=newDate(date.getYear(),(date.getMonth()),(date.getDate()-date.getDay()+1))
varMonday=FD.getYear()+"-"+(FD.getMonth()+1)+"-"+FD.getDate()//一周的第一天
varLD=newDate(date.getYear(),(date.getMonth()),(date.getDate()-date.getDay()+7))
varSunday=LD.getYear()+"-"+(LD.getMonth()+1)+"-"+LD.getDate()//一周的最后一天
alert(year+"年第"+weekNum+"周是"+Monday+"至"+Sunday)
}
c#
//monthCalendar1是日历控件
System.Globalization.ChineseLunisolarCalendarc=newChineseLunisolarCalendar();
privatevoidmonthCalendar1_DateChanged(objectsender,DateRangeEventArgse)
{
DateTimeMySelectDate=e.End;
txt_nonglidate.Text=string.Format(CultureInfo.InstalledUICulture,"{0}-{1}-{2}",c.GetYear(MySelectDate),c.GetMonth(MySelectDate),c.GetDayOfMonth(MySelectDate));
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 按照 日期 取得 今天 星期