//如何判断当天日历是星期几 #include <stdio.h> #include <time.h> int main () { time_t rawtime; struct tm * timeinfo; int year, month ,day; char * weekday[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; //注意这里的顺序,值得参考 /* prompt user for date */ printf ("Enter year: "); scanf ("%d",&year); printf ("Enter month: "); scanf ("%d",&month); printf ("Enter day: "); scanf ("%d",&day); /* get current timeinfo and modify it to the user's choice */ time ( &rawtime ); timeinfo = localtime ( &rawtime ); timeinfo->tm_year = year - 1900; timeinfo->tm_mon = month - 1; timeinfo->tm_mday = day; /* call mktime: timeinfo->tm_wday will be set */ mktime ( timeinfo ); printf ("That day is a %s./n", weekday[timeinfo->tm_wday]); return 0; }
相关知识点说明:
1. 类型说明
<time.h>
typedef long time_t; /* time value */
struct tm { int tm_sec; /* seconds after the minute - [0,59] */ int tm_min; /* minutes after the hour - [0,59] */ int tm_hour; /* hours since midnight - [0,23] */ int tm_mday; /* day of the month - [1,31] */ int tm_mon; /* months since January - [0,11] */ int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ int tm_isdst; /* daylight savings time flag */ };
2.函数说明
[1]函数名: time
头文件:time.h
函数原型:time_t time(time_t * timer)
功 能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。
[2]函数名:localtime
原型: struct tm *localtime(const time_t *clock);
功 能: 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为日历时间 。
说明:此函数获得的tm结构体的时间,是已经进行过时区转化为本地时间。
返回值:返回指向tm 结构体的指针.tm结构体是time.h中定义的用于分别存储时间的各个量(年月日等)的结构体.
[3]函数名:mktime
原型:time_t mktime(strcut tm * timeptr);
说明:mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。
返回值:返回经过的秒数。