题目

用 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;
}

运行示例

程序不需要从键盘读入,直接运行。输出如下:

(当前时间)