在C语言中,时间函数time.h
定义的星期表示方法中,0确实代表星期天。具体说明如下:
-
标准表示方法
-
tm_wday
(星期):取值范围为[0,6],其中0表示星期天,1表示星期一,依此类推。 -
tm_yday
(一年中的第几天):取值范围为[0,365],0代表1月1日。 -
tm_isdst
(夏令时标识):实行夏令时时为正,否则为0。
-
-
基姆拉尔森计算公式
-
公式:
W = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) mod 7
-
以公元元年1月1日为星期一为基准,计算结果中0对应星期一,1对应星期二,依此类推。
-
-
注意事项
-
不同来源对星期起始日的定义可能略有差异,需结合具体应用场景确认。
-
若使用
time.h
库函数,需包含<time.h>
头文件,并注意函数参数与返回值的对应关系。
-
示例代码 (使用time.h
库):
#include <stdio.h>
#include <time.h>
int main() {
time_t t;
struct tm *tm_info;
t = time(NULL);
tm_info = localtime(&t);
printf("星期: %d\n", tm_info->tm_wday); // 0-6对应星期天到星期六
return 0;
}
示例代码 (使用基姆拉尔森公式):
#include <stdio.h>
int calculateWeekday(int y, int m, int d) {
if (m <= 2) m += 12; y--;
int w = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7;
switch(w) {
case 0: return 0; // 星期天
case 1: return 1; // 星期一
// ...
case 6: return 6; // 星期六
}
return -1; // 错误
}
int main() {
int year, month, day;
printf("输入年 月 日: ");
scanf("%d %d %d", &year, &month, &day);
int weekday = calculateWeekday(year, month, day);
printf("星期: %d\n", weekday);
return 0;
}
以上代码展示了两种不同的星期表示方法,可根据需求选择使用。