计算星期用公历一月一日开始计算
时间: 2024-11-03 18:16:48 浏览: 11
在计算机编程中,计算某一天属于星期几通常使用蔡勒公式(Zeller's congruence)。如果从公元1月1日起,公历日期(年、月、日)为`(y, m, d)`,其中y表示世纪数(例如,2022年就是21世纪),m表示月份(范围1到12,注意1月和2月在格里高利历中通常被视为上一年的13月和14月),d是该月的具体日期,那么星期可以按照以下公式计算:
```c
int day_of_week(int y, int m, int d) {
if (m < 3) { // 如果是前3个月,需要把月份加1
m += 12;
y--;
}
int q = d; // 星期天是0,其他依次递增
int K = y % 100;
int J = y / 100;
int h = (q + ((13 * (m + 1)) / 5) + K + (K / 4) + (J / 4) - (2 * J)) % 7;
return h;
}
```
在这个函数中,返回值h范围在0到6之间,分别对应星期日到星期六。星期天通常记作0。
为了得到具体的星期名称,你可以创建一个数组,存储每个星期对应的英文名字,然后通过h的值找到相应的名称。
```c
const char* week_days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
// 示例
int year = 2023, month = 3, day = 10; // 假设查询2023年3月10日
int weekday_index = day_of_week(year, month, day);
printf("The date %d/%d/%d falls on %s.\n", day, month, year, week_days[weekday_index]);
```
阅读全文