C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


C 日期和时间

时间和日期

在 C 语言中,您可以使用 <time.h> 标头来处理日期和时间。

此库可让您获取当前时间、格式化当前时间并执行与时间相关的计算。


获取当前时间

<time.h> 库具有各种用于测量日期和时间的函数。

例如,time() 函数返回当前时间,其值为 time_t。

您可以使用 ctime() 将时间转换为可读字符串,例如"Mon Jun 24 10:15:00 2025"

示例


#include <stdio.h>
#include <time.h>

int main() {
  time_t currentTime;
  time(&currentTime); // 获取当前时间

  printf("Current time: %s", ctime(&currentTime));
  return 0;
}

亲自试一试 »


时间细分

如果您想访问日期或时间的各个组成部分,例如年、月或小时,可以使用 localtime() 函数。

此函数将当前时间(来自 time())转换为 struct tm 结构体,该结构体是一种特殊的数据结构,它将日期和时间分别存储在不同的字段中。

以下是如何使用它来打印当前日期和时间的各个部分:

示例


#include <stdio.h>
#include <time.h>

int main() {
  time_t now = time(NULL);         // 获取当前时间
  struct tm *t = localtime(&now);  // 转换为本地时间结构

  printf("Year: %d
", t->tm_year + 1900);  // 加上 1900 即可得到实际年份。
  printf("Month: %d
", t->tm_mon + 1);     // 月份编号从0到11,所以加1才能与实际月份编号(1-12)一致。
  printf("Day: %d
", t->tm_mday);
  printf("Hour: %d
", t->tm_hour);
  printf("Minute: %d
", t->tm_min);
  printf("Second: %d
", t->tm_sec);
  return 0;
}

亲自试一试 »

注意: tm_year 存储自 1900 年以来的年数,因此我们需要加上 1900 才能得到完整的年份,而 tm_mon 从 0 开始(因此 0 代表一月,11 代表十二月)。

注意:我们使用->,因为localtime()返回一个指针,指向struct tm。

正如你在结构体与指针章节中所学到的:如果你有一个指向结构体的指针,请使用->来访问其成员。只有当你直接操作结构体本身,而不是指向它的指针时,才使用点.。


格式化日期和时间

您可以使用 strftime() 将日期和时间格式化为字符串:

示例


#include <stdio.h>
#include <time.h>

int main() {
  time_t now = time(NULL);
  struct tm *t = localtime(&now);
  char buffer[100];

  strftime(buffer, sizeof(buffer), "%d-%m-%Y %H:%M:%S", t);
  printf("Formatted time: %s
", buffer);
  return 0;
}

亲自试一试 »


何时使用日期和时间

在 C 语言中,当您想使用日期和时间时:

  • 显示当前时间或日期
  • 记录事件,例如错误或用户操作
  • 向文件或消息添加时间戳
  • 测量执行某项操作所需的时间
  • 安排或延迟操作
  • 种子随机数(这样每次运行都会得到不同的结果)