显示当月月历 // 获取系统时间并解析年份和月份 // 输出当月的日历,c语言代码
时间: 2024-02-15 19:29:59 浏览: 21
以下是使用 C 语言编写的获取系统时间并显示当月月历的代码:
```
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL); // 获取当前时间
struct tm *now = localtime(&t); // 将时间转换为本地时间
int year = now->tm_year + 1900; // 获取年份
int month = now->tm_mon + 1; // 获取月份
printf(" %d年%d月\n", year, month); // 输出年份和月份
printf("日 一 二 三 四 五 六\n");
struct tm first_day = {0};
first_day.tm_year = now->tm_year;
first_day.tm_mon = now->tm_mon;
first_day.tm_mday = 1;
mktime(&first_day); // 计算当月第一天的时间
int week_day = first_day.tm_wday; // 获取当月第一天是星期几
for (int i = 0; i < week_day; i++) {
printf(" "); // 输出空格
}
int days_in_month = 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
days_in_month = 30; // 4月、6月、9月、11月只有30天
} else if (month == 2) {
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
days_in_month = 29; // 闰年的2月有29天
} else {
days_in_month = 28; // 平年的2月有28天
}
}
for (int i = 1; i <= days_in_month; i++) {
printf("%2d ", i); // 输出日期
if ((week_day + i) % 7 == 0) {
printf("\n"); // 每周换行
}
}
printf("\n");
return 0;
}
```
该程序首先获取了当前系统时间,并通过 `localtime()` 函数将其转换为本地时间。然后获取了年份和月份,并输出了当月的月历。程序中使用了 `mktime()` 函数计算了当月第一天的时间,并使用了一些逻辑判断来确定当月的天数和每个日期在日历上的位置。