将第二个程序写入第一个程序的获取当前日期中,使成第一个程序运行成功
#include <stdio.h>
#include <time.h>
// 函数声明
int getDayOfWeek(int year, int month, int day);
int isLeapYear(int year);
int daysInMonth(int year, int month);
int main() {
int year, month, day;
printf("请输入一个日期(年 月 日): ");
scanf("%d %d %d", &year, &month, &day);
// 获取当前日期
// 计算天数差
int totalDays = 0;
int daysBetween = 0;
for (int y = year; y < currentYear; y++) {
totalDays += isLeapYear(y) ? 366 : 365;
}
for (int y = year; y < currentYear; y++) {
for (int m = month; m < 12; m++) {
if (y == currentYear && m > currentMonth) {
break;
}
totalDays += daysInMonth(y, m);
}
}
for (int m = month; m <= currentMonth; m++) {
daysBetween += daysInMonth(year, m);
}
totalDays += daysBetween - day + currentDay;
// 输出结果
printf("从输入的日期到今天有 %d 天\n", totalDays);
printf("输入的日期是星期%d\n", getDayOfWeek(year, month, day));
return 0;
}
// 判断是否为闰年
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 获取月份的天数
int daysInMonth(int year, int month) {
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
return isLeapYear(year) ? 29 : 28;
default:
return 0;
}
}
// 获取星期几
int getDayOfWeek(int year, int month, int day) {
// Zeller公式
if (month < 3) {
month += 12;
year -= 1;
}
int k = year % 100;
int j = year / 100;
int h = day + 13 * (month + 1) / 5 + k + k / 4 + j / 4 + 5 * j;
h = h % 7;
return h;
}
#include"stdio.h"
#include<time.h>
int main()
{
struct tm *loca_t;
time_t ti;
ti = time(NULL);
loca_t = localtime(&ti);
printf("Year=%d\n",loca_t->tm_year+1900);
printf("Mon=%d\n",loca_t->tm_mon+1);
printf("Day=%d\n",loca_t->tm_mday);
printf("weekday=%d\n",loca_t->tm_wday+1);
}