题目
用 time 打印当前本地时间字符串
思路
本题获取当前本地时间,格式化为 年-月-日 时:分:秒 字符串输出。
用 time 得秒级时间戳,localtime 转成本地 struct tm,再用 strftime 按格式写入缓冲区并 printf 打印。
解题分析
time(NULL) 得秒数,localtime 转本地 broken-down time,strftime 格式化。时区由系统环境决定,程序里一般不手写偏移。
函数简要说明
获取并格式化本地时间(#include <time.h>):
time(NULL):当前日历时间,秒数,类型time_t;传入NULL表示不要另存到变量。localtime(&t):把秒数转成本地时区的 broken-down 时间,返回struct tm*(静态存储,勿长期保存指针)。strftime(buf, size, fmt, tm):按格式串写入可读字符串,如"%Y-%m-%d %H:%M:%S"得2026-03-20 15:04:05。- 时区由操作系统环境决定;在线运行输出为服务器本地时间。
完整程序
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t t = time(NULL);
struct tm *lt = localtime(&t);
char buf[64];
strftime(buf, sizeof buf, "%Y-%m-%d %H:%M:%S", lt);
printf("%s\n", buf);
return 0;
}
运行示例
程序不需要从键盘读入,直接运行。输出如下:
(当前时间)