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

合集下载

c语言详解 蔡勒(Zeller)公式计算某一天是星期几  极其方便

c语言详解 蔡勒(Zeller)公式计算某一天是星期几  极其方便

c语⾔详解 蔡勒(Zeller)公式计算某⼀天是星期⼏ 极其⽅便1. —— 蔡勒(Zeller)公式历史上的某⼀天是星期⼏?未来的某⼀天是星期⼏?关于这个问题,有很多计算公式(两个通⽤计算公式和⼀些分段计算公式),其中最著名的是蔡勒(Zeller)公式。

即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:⽉(m⼤于等于3,⼩于等于14,即在蔡勒公式中,某年的1、2⽉要看作上⼀年的13、14⽉来计算,⽐如2003年1⽉1⽇要看作2002年的13⽉1⽇来计算);d:⽇;[ ]代表取整,即只要整数部分。

(C是世纪数减⼀,y是年份后两位,M是⽉份,d是⽇数。

1⽉和2⽉要按上⼀年的13⽉和14⽉来算,这时C和y均按上⼀年取值。

)算出来的W除以7,余数是⼏就是星期⼏。

如果余数是0,则为星期⽇。

以2049年10⽉1⽇(100周年国庆)为例,⽤蔡勒(Zeller)公式进⾏计算,过程如下:蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1=49+[49/4]+[20/4]-2×20+[26× (10+1)/10]+1-1=49+[12.25]+5-40+[28.6]=49+12+5-40+28=54 (除以7余5)即2049年10⽉1⽇(100周年国庆)是星期5。

你的⽣⽇(出⽣时、今年、明年)是星期⼏?不妨试⼀试。

不过,以上公式只适合于1582年10⽉15⽇之后的情形(当时的罗马教皇将恺撒⼤帝制订的儒略历修改成格⾥历,即今天使⽤的公历)。

过程的推导:(对推理不感兴趣的可略过不看)星期制度是⼀种有古⽼传统的制度。

据说因为《圣经·创世纪》中规定上帝⽤了六天时间创世纪,第七天休息,所以⼈们也就以七天为⼀个周期来安排⾃⼰的⼯作和⽣活,⽽星期⽇是休息⽇。

从实际的⾓度来讲,以七天为⼀个周期,长短也⽐较合适。

C语言源代码——计算任何一天是星期几

C语言源代码——计算任何一天是星期几

C语⾔源代码——计算任何⼀天是星期⼏代码写的不严谨。

⽹上也有很多计算任何⼀天是星期⼏的C语⾔源代码,不过,有些代码含有⼀点点⼩错误。

像闰年的分辨啊,或者是每个⽉的天数,再或者星期的计算公式,都是⽐较细微的环节,出⼀点错误都有可能导致结果不正确。

这⼀点,我都进⾏过验证。

下⾯我选出的这组代码,结构清晰,语法明确。

希望能给各位C的爱好者或者要考计算机⼆级的同学们⼀点点帮助!当然,有错误的话,也请各位指出!代码如下:1 #include <stdio.h>2int main()3 {4int day,mn,yr,i,days=0,s,k;5int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};6char wek[][9]={ {'S','u','n','d','a','y'},7 {'M','o','n','d','a','y'},8 {'T','u','e','s','d','a','y'},9 {'W','e','d','n','s','d','a','y'},10 {'T','h','u','r','s','d','a','y'},11 {'F','r','i','d','a','y'},12 {'S','a','t','u','r','d','a','y'}13 };14 printf("Inpute the date (year-month-day):");15 scanf("%d-%d-%d",&yr,&mn,&day);16if (yr%4==0||yr%100==0||yr%400==0)17 mont[2]=29;18else19 mont[2]=28;20for (i=0;i<mn;i++)21 days+=mont[i];22 days+=day;23 s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;24 k=s%7;25 printf("%d-%d-%d is %s.",yr,mn,day,wek[k]);26return0;27 }。

Cdate日期表达式将日期表达式...

Cdate日期表达式将日期表达式...

1.Cdate(日期表达式)将日期表达式转换成日期类型的数据。

日期表达式是任何可以解释成日期的表达式,包含日期文字,可以看作日期的字符串以及从函数返回的日期。

比如:myDate = CDate("99-5-20") ,这样的日期表达式必须加双引号,否则结果不可预料。

CDate 依据系统上的区域设置来决定日期的格式。

如果提供的格式为不可识别的日期设置,则不能正确判断年、月、日的顺序。

2.Now()返回当前计算机系统设置的日期和时间。

3.Y ear(日期表达式)返回表示年份的整数。

比如:Y ear("00-6-15") = 20004.Month(日期表达式)返回 1 到12 之间的整数,表示一年中的某月。

比如:Month("00-6-15") = 65.DateAdd(interval, number, date)DateAdd 函数语法中有下列命名参数:部分描述interval 必要。

字符串表达式,是所要加上去的时间间隔。

number 必要。

数值表达式,是要加上的时间间隔的数目。

其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。

date 必要。

V ariant (Date) 或表示日期的文字,这一日期还加上了时间间隔。

设置interval 参数具有以下设定值:设置描述yyyy 年q 季m 月y 一年的日数d 日w 一周的日数ww 周h 时n 分钟s 秒说明可以使用DateAdd 函数对日期加上或减去指定的时间间隔。

例如,可以用DateAdd 来计算距今天为三十天的日期;或者计算距现在为45 分钟的时间。

为了对date 加上―日‖,可以使用―一年的日数‖ (―y‖),―日‖ (‖d‖) 或―一周的日数‖ (‖w‖)。

DateAdd 函数将不返回有效日期。

在以下实例中将 1 月31 日加上一个月:DateAdd(m, 1, 31-Jan-95)上例中,DateAdd 返回1995 年 2 月28 日,而不是1995 年 2 月31 日。

C语言实训--万年历源代码

C语言实训--万年历源代码

C语言实训--万年历源代码# include#include#include#include#include# define YEAR 365int numday[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}};int leap(int year);int calday(int y,int m);int counterdays(int year,int month,int day);int week(int year,int month,int day);int eachyeartotal(int year,int month,int day);int maxDay(int y,int month);void print(int y,int m,int w);void festival (int year,int month,int day);int IsLeap(int y);int guanli(int i);void rili(int year,int month);int rili1();void rili2();void rili3();void rili4();void rili5();void fan();void show(int year,int month,int date,int sec,int mini,int hour);int main(){int i;printf("***************************************\n"); printf("1.查询日历,输入年份:\n");printf("2.查询该月日历及对应星期,输入年份和月份:\n"); printf("3.查询星期几及节日,输入年月日:\n");printf("4.距您输入日期还有多少天,输入日期:\n"); printf("5.通过键盘上下控制不同年月日:\n");scanf("%d",&i);guanli(i);return 0;}int guanli(int i){switch(i){case 1:rili1();return main();case 2:rili2();return main();case 3:rili3();return main();case 4:rili4();return main();case 5:rili5();return main();}return 0;}int rili1(){int year;int n,i;printf("输入年份:");scanf("%d",&year);printf("the calendar of the year%d\n",year);printf("\n");printf("=============================\n"); for(i=1;i<13;i++){printf(" %d月份\n",i);rili(year,i);}n = leap(year);return 0;}void rili2(){int year,month,w;printf("输入年月:");scanf("%d%d",&year,&month);w=calday(year,month);print(year,month,w);}void rili3(){int year,month,day,number;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day);festival(year,month,day);number= week(year,month,day);printf("星期%d",number);}void rili4(){int year,month,day;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day); eachyeartotal( year,month,day);counterdays(year,month,day);}void rili5(){int year,month,date,sec,mini,hour;fan();show(year,month,date,sec,mini,hour);}int leap(int year){int n=(year%4==0 && year%100!=0 || year%100!=0); return n;}void rili(int year,int month){int i,day,first_day,flag,year1,year2;int temp = 6;flag =leap(year);year1=year/100;year2=year%100;if(year>2000){year1=year1-20;day = year1/4;day+=(YEAR+24)*year1+YEAR*year2+(year2-1)/4;if(year>2000)day++;switch(month){case 1:day; break;case 2:day+=31;break;case 3:day+=59+flag;break;case 4:day+=90+flag;break;case 5:day+=120+flag;break;case 6:day+=151+flag;break;case 7:day+=181+flag;break;case 8:day+=212+flag;break;case 9:day+=243+flag;break;case 10:day+=273+flag;break;case 11:day+=304+flag;break;case 12:day+=334+flag;break;}day+=temp;first_day=day%7;}else{year1 = 20-1-year;year2=100-year2-1;day+=(YEAR+24)*year1+YEAR*year2+year2/4; switch(month){case 12:day+=31;break;case 11:day+=61;break;case 10:day+=92;break;case 9:day+=122;break;case 8:day+=153;break;case 7:day+=184;break; case 6:day+=214;break; case 5:day+=245;break; case 4:day+=275;break; case 3:day+=306;break; case 2:day+=334+flag;break; case 1:day+=365+flag;break; }day-=temp;day = day%7;first_day=(7-day)%7;}switch(month){case 1:case 2:month=28+flag;break; case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:month=30;break; case 12:month =31;break;}for(i=1;i<4*first_day;i++) printf(" ");for(i=0;i<month;i++)< p="">{printf("%4d",i+1);if((first_day+i)%7==6)printf("\n");}printf("\n");printf("===============================\n");}///////////////////////////////////////////////////////////int counterdays(int year,int month,int day){int year1,days0,days1,month1,days,day1;time_t timep;struct tm*p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year);month1=(1+p->tm_mon);day1=(p->tm_mday);days0=(year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400 +eachyeartotal (year,month,day);days1=(year1 - 1)*365+(year1-1)/4-(year1-1)/100 + (year1 - 1)/400 +eachyeartotal (year1,month1,day1);days=days0-days1;printf("\n今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}int eachyeartotal(int year,int month,int day){int i,sum=0;for(i=1;i<month;i++)< p="">{sum+=maxDay(year,i);}sum+=day;return sum;}int IsLeap(int y){if(y%4==0 && y%100!=0 || y%400==0) return 1; else return 0;}int maxDay(int y,int month){int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(IsLeap(y))a[1]=29;return a[month-1];}///////////////////////////////////////void festival (int year,int month,int day){if (month==1 && day==1) printf (",这天是元旦");if (month==2 && day==14) printf (",这天是情人节"); if (month == 3)switch(day){case 8:printf (",这天是妇女节"); break;case 12:printf (",这天是植树节");}if (month==1 && day==1) printf (",这天是愚人节");if(month == 5)switch (day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if (month==6 && day==1) printf (",这天是儿童节");if (month==7 && day==1) printf (",这天是建党节");if (month==8 && day==1) printf (",这天是建军节");if (month==9 && day==10) printf (",这天是教师节");if (month==10 && day==1) printf (",这天是国庆节");printf("\n");}int week(int year,int month,int day){int number = (year-1)+(year-1)/4 - (year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number = number%7;return number;}/////////////////////////////////////////////void print(int y,int m,int w){int i,l;printf("Calendar %d-%02d\n",y,m);printf("---------------------\n");printf("Su Mo Tu We Th Fr Sa \n");printf("---------------------\n");for (i=0;i<w;i++)< p=""> printf(" ");if (IsLeap(y))l=1;elsel=0;for (i=1;i<=numday[l][m-1];i++) {printf("%-3d",i);w++;if (w%7==0)printf("\n");}if (w%7) printf("\n");printf("---------------------\n"); }int calday(int y,int m){int d=0,w;while (y>1910){if (IsLeap(y)) d+=366;else d+=365;y--;}while (m>1){ --m;d+=numday[0][m-1];}w=(d+1)%7;return w;}//////////////////////////////////////////void show(int year,int month,int date,int sec,int mini,int hour) {const char month_str[][4]={"","Jan","Feb","Mar","Apl", "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};int i,j,wdays,mdays,days;for(i=1,days=0;i<year;i++)< p="">{if(leap(i))days += 366;}else{days += 365;}}for(i=1;i<month;i++)< p="">{if(i==2 && leap(year)){days+=29;}else{days+=month_day[i];}}printf(" %s.%d.%d %d:%d:%d \n",month_str[month],date,year,hour,mini,sec);printf(" 一二三四五六日\n");wdays = days % 7;for( j = 0; j < wdays; j++){printf(" ");}if(month == 2 && leap(year)){mdays=29;}else{mdays= month_day[month];}for(i=1;i<=mdays;i++){if( i > 1 && days % 7 == 0 ){printf("\n");}printf("%4d",i);days=days+1; }printf("\n---------------------------\n\n\n");}{time_t rawtime;struct tm *info;int year,month,date,sec,mini,hour; char ch;time ( &rawtime );info = localtime ( &rawtime );year =info->tm_year + 1900; month =info->tm_mon + 1;date =info->tm_mday;hour =info->tm_hour;mini =info->tm_min;sec =info->tm_sec;while(1){show(year,month,date,sec,mini,hour); printf("↑......上一年\n\n");printf("↓......下一年\n\n");printf("←....前一个月\n\n");pr intf("→....后一个月\n\n");printf("Esc.......退出\n\n");ch=getch();switch(ch){case 27://Ecs exit(0);case -32://Navigatorch=getch();if(ch==77){//Rightyear+=(month==12)?1:0;month=month%12+1;}else if(ch==75){year-=(month==1)?1:0; month=(month-2+12)%12+1; }else if(ch==72)year--;else if(ch==80)year++;system("cls");}}</month;i++)<></year;i++)<></w;i++)<></month;i++)<></month;i++)<>。

C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)

C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)

C语⾔根据⽇期(年,⽉,⽇)判断星期⼏(使⽤基姆拉尔森计算公式)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来代⼊公式计算。

以公元元年为参考,公元元年1⽉1⽇为星期⼀程序如下:/*利⽤基姆拉尔森计算⽇期公式 w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)*/#include <stdio.h>const char * getWeekdayByYearday(int iY, int iM, int iD){int iWeekDay = -1;if (1 == iM || 2 == iM){iM += 12;iY--;}iWeekDay = (iD + 1 + 2 * iM + 3 * (iM + 1) / 5 + iY + iY / 4 - iY / 100 + iY / 400) % 7;switch(iWeekDay){case0 : return"Sunday"; break;case1 : return"Monday"; break;case2 : return"Tuesday"; break;case3 : return"Wednesday"; break;case4 : return"Thursday"; break;case5 : return"Friday"; break;case6 : return"Saturday"; break;default : return NULL; break;}return NULL;}int main(){int year,month,day;char ch='1';while(ch != '\033'){printf("\n请输⼊⽇期:\n格式为:1900,1,1\n");scanf("%d,%d,%d",&year,&month,&day);const char * p = getWeekdayByYearday(year, month, day);printf("WeekDay : %s\n", p);ch = getchar();printf("\n");}}运⾏效果:$ ./getweekdaybyday请输⼊⽇期:格式为:1900,1,12008,4,29WeekDay : Tuesday请输⼊⽇期:格式为:1900,1,12015,2,4WeekDay : Wednesday请输⼊⽇期:格式为:1900,1,1编者注:⽤来算现在真实⽇期的星期是没有问题的。

C语言课程设计万年历 完整版

C语言课程设计万年历  完整版

目录一引言 (2)二系统功能和数据说明 (3)一)功能简介 (3)二)程序中的数据说明 (3)三程序总体设计及流程图 (4)一)应用到的c语言 (4)二)程序的总框架 (5)四功能模块设计及调试 (5)一)算法说明 (5)1.总天数的算法 (5)2.计算输入日期是星期几 (6)3.对输入信息的汇总 (8)4..界面的控制 (10)二)调试结果 (11)五程序清单 (12)六结束语 (17)一引言通过大一上学期对C语言的学习,了解到了很多C语言的相关知识。

学习的过程有很多困惑但是当自己能够独立的看懂,能过独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。

我可以里哟哦那个它看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对探究的兴趣。

C语言是近年在国内外得到迅速推广应用的一种语言。

C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。

因此,C语言特别适合于编写各种软件。

在这次的课程设计中我将把日常生活中最经常接触的——日期的查询利用C语言的程序编成一个简单的日历。

通过这个小小的日历可以实现很多功能。

在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。

在不断的调试中最终才获得最为完整的程序。

接下来就是我的C 语言课程设计的具体内容来了二系统功能和数据说明(一)功能简介在我们的日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简介明了的给我们最想要的日期信息。

在我的万年历当中,就是将日历,月历做的简单明了,很方便我们的使用。

下面是它要实现的一些基本功能:用C语言编写万年历1、输入年份,判断是否为闰年2、输入年月日,判断改日为星期几3、输入年份,打出12个月历,输入月份,打出该月的日历4、要求用多个函数实现[名称]万年历[修改]1、对输入的日期进行容错处理2、增加和修改为英文的月份和星期显示3、采用指针形式的weeks和month数组(二)程序中的数据说明①int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};这是定义的关于每个月天数的数组,根据大小月以及二月分的特殊情况将每个月的天数最为数组中的元素存入数组当中。

万年历c语言代码讲解

万年历c语言代码讲解

万年历c语言代码讲解万年历是一种常见的日历形式,可以显示一年中每一天的日期和星期几。

在计算机编程中,我们可以使用C语言编写一个万年历的程序来实现这个功能。

我们需要了解一个概念:闰年。

闰年是指能被4整除但不能被100整除的年份,或者能被400整除的年份。

闰年的2月份有29天,而普通年份的2月份只有28天。

接下来,我们可以开始编写程序了。

首先,我们需要定义一个结构体来表示日期,结构体中包含年、月和日三个成员变量。

然后,我们可以编写一个函数来判断某一年份是否是闰年。

根据闰年的定义,我们可以使用取余运算符(%)来判断。

接下来,我们需要编写一个函数来计算某一年月的某一天是星期几。

这个函数的核心思想是根据已知的某一天是星期几,然后通过计算得出某一天之后或之前的日期是星期几。

我们可以使用一个数组来保存每个月份的天数,并根据年份是否是闰年来调整2月份的天数。

在计算星期几的过程中,我们可以使用蔡勒公式。

蔡勒公式是一种计算星期几的方法,根据蔡勒公式,我们可以得出某一天是星期几。

具体的计算公式可以在代码中实现,但是根据要求,我们不能输出公式,所以在这里就不展开讲解了。

接下来,我们可以编写一个主函数来调用上述的函数,并输出结果。

在主函数中,我们可以通过用户输入来获取需要查询的年月信息,然后调用函数来计算星期几,并输出结果。

为了使输出结果更加美观,我们可以使用制表符来对齐输出的结果。

在编写主函数的过程中,我们还可以加入一些错误处理的代码,例如判断用户输入的年月是否合法,以及判断计算结果是否正确。

这样可以增加程序的健壮性和用户体验。

我们还可以考虑加入一些额外的功能,例如输出某个月份的日历表格或者某一天所在的周的日期范围等。

这样可以提升程序的实用性和功能性。

通过以上的步骤,我们就可以完成一个简单的万年历程序的编写。

这个程序可以根据用户的输入来计算某一年月的某一天是星期几,并输出结果。

通过这个程序,我们可以更方便地查询任意日期的星期几,从而更好地了解和利用时间。

C语言万年历代码

C语言万年历代码

else if(ch=='n'||ch=='N')
{ month+=1;
if(month>12) {month=1;year+=1;}
}
printf("\t\t********e退出 p上一月 n下一月********");
}
void first_set(int *year,int *month)
{ do{
printf ("please input the year(1~9999):");
if (choose=='y'||choose=='Y') main();
}
days_of_month(int x,int y)
{
int z;
switch (y)
{case 1:
case 3:
case 5:
case 7:
case 8:
printf ("please input the month(1~12):");
scanf ("%d",month);
if(*month<1||*month>12) printf ("WANNING:ERROR,please input again!\n");
printf ("\n\n********************************************************************************\n\n");
自己做的日历(C语言)
本帖最后由 kekeyu 于 2010-8-15 16:59 编辑
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法如下:基姆拉尔森计算公式: 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));}。

相关文档
最新文档