C 语言格式化输出时间
本文部分内容借助于 AI 生成~
struct tm
是C语言标准库 <time.h>
中自带的结构体类型之一。它用于表示日历时间和日期时间的组成部分。
struct tm
结构体定义了以下成员变量:
int tm_sec:
秒(0-59)int tm_min:
分钟(0-59)int tm_hour:
小时(0-23)int tm_mday:
一月中的第几天(1-31)int tm_mon:
月份(0-11,0 表示一月,11 表示十二月)int tm_year:
年份(以 1900 为基准)int tm_wday:
一周中的第几天(0-6,0 表示周日,6 表示周六)int tm_yday:
一年中的第几天(0-365)int tm_isdst:
夏令时标识符(正数表示 DST 有效,0 表示 DST 无效,负数表示 DST 信息不可用)
这些成员变量可以用于存储和处理日历时间和日期时间的信息。可以使用函数如 gmtime()
、localtime()
将时间戳(time_t 类型)转化为 struct tm
结构体,也可以使用 mktime()
将 struct tm
结构体转化为时间戳。
C o d e Code Code
#include <stdio.h>
#include <time.h>
int main() {
// time_t 类型是表示时间的整数类型
time_t now;
// time() 函数接受一个指向 time_t 变量的指针作为参数,并将当前时间的时间戳保存到该变量中
time(&now);
// struct tm 是一个结构体,用来存储时间的各个部分,如年、月、日、小时、分钟、秒等
// localtime() 将 time_info 变量的时间戳转换为本地时间,并将结果保存到 now 指针变量中
struct tm* time_info = localtime(&now);
int y = time_info->tm_year + 1900;
int m = time_info->tm_mon + 1;
int d = time_info->tm_mday;
int h = time_info->tm_hour;
printf("---%04d-%02d-%02d %02d:00---\n", y, m, d, h);
// asctime() 函数接受一个指向 struct tm 结构体的指针作为参数,返回一个格式化的时间字符串
// 并且返回的字符串末尾有一个'\n'.如果不想要这个'\n'可以这样:
// string s = asctime(time_info); s = s.substr(0, s.size() - 1);
printf("---%s---", asctime(time_info));
return 0;
}
输出:
---2023-12-01 21:00---
---Fri Dec 01 21:01:12 2023
---