主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
C++

C++ 基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

C++ 字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

C++ 函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

C++ 面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

C++ 高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

C++ 日期与时间


上一章 下一章

C++ 标准库并没有提供一个专门的日期类型。C++ 继承了 C 语言中用于日期和时间处理的结构体和函数。要在 C++ 程序中访问日期和时间相关的函数和结构体,你需要包含 <ctime> 头文件。

存在四种与时间相关的基本类型:clock_t、time_t、size_t 和 tm。类型 clock_t、size_t 和 time_t 能够以某种形式的整数来表示系统时间和日期。

tm 结构体持有以 C 结构体形式表示的日期和时间,其包含以下元素:

struct tm {
   int tm_sec;   // 秒钟数,0 到 61
   int tm_min;   // 分钟数,0 到 59
   int tm_hour;  // 小时数,0 到 24
   int tm_mday;  // 一个月中的天数,1 到 31
   int tm_mon;   // 一年中的月份,0 到 11
   int tm_year;  // 自 1900 年以来的年数
   int tm_wday;  // 星期几,0 为周日
   int tm_yday;  // 一年中的天数,从 1 月 1 日开始
   int tm_isdst; // 夏令时标志
}

以下是我们在 C 或 C++ 中处理日期和时间时常用的重要函数。所有这些函数都是标准 C 和 C++ 库的一部分,你可以通过下面给出的 C++ 标准库参考来查看它们的详细信息。

表一:函数及其用途

  1. time_t time(time_t *time);
    返回系统当前的日历时间,即从 1970 年 1 月 1 日以来经过的秒数。如果系统没有时间,则返回 .1。

  2. char *ctime(const time_t *time);
    返回指向字符串的指针,该字符串格式为 day month year hours:minutes:seconds year\n\0。

  3. struct tm *localtime(const time_t *time);
    返回指向表示本地时间的 tm 结构体的指针。

  4. clock_t clock(void);
    返回一个值,该值近似于调用程序已经运行的时间。如果没有时间,则返回 .1。

  5. char *asctime ( const struct tm * time );
    返回指向字符串的指针,该字符串包含存储在 time 指向的结构体中的信息,格式为 day month date hours:minutes:seconds year\n\0。

  6. struct tm *gmtime(const time_t *time);
    返回指向 tm 结构体的指针,该结构体表示协调世界时 (UTC),这基本上是格林威治标准时间 (GMT)。

  7. time_t mktime(struct tm *time);
    返回 time 指向的结构体中找到的时间的日历时间等效值。

  8. double difftime ( time_t time2, time_t time1 );
    此函数计算 time1 和 time2 之间的时间差(秒)。

  9. size_t strftime();
    此函数可用于按照特定格式格式化日期和时间。

当前日期和时间

假设你想获取当前系统的日期和时间,无论是本地时间还是协调世界时 (UTC)。

示例代码

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // 当前基于当前系统的日期/时间
   time_t now = time(0);

   // 将 now 转换为字符串形式
   char* dt = ctime(&now);

   cout << "本地日期和时间是: " << dt << endl;

   // 将 now 转换为 UTC 的 tm 结构体
   tm *gmtm = gmtime(&now);
   dt = asctime(gmtm);
   cout << "UTC 日期和时间是: " << dt << endl;
}

当上述代码被编译并执行时,它会产生以下结果:

本地日期和时间是: Sat Jan  8 20:07:41 2011

UTC 日期和时间是: Sun Jan  9 03:07:41 2011

使用 tm 结构体格式化时间

在 C 或 C++ 中处理日期和时间时,tm 结构体是非常重要的。此结构体持有以 C 结构体形式表示的日期和时间,如上所述。大多数与时间相关的函数都会使用 tm 结构体。以下是一个使用各种日期和时间相关函数以及 tm 结构体的示例:

在本章中使用结构体时,我假定你已经对 C 结构体有基本的理解,并且知道如何使用箭头 -> 操作符来访问结构体成员。

示例代码

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // 当前基于当前系统的日期/时间
   time_t now = time(0);

   cout << "自 1970 年 1 月 1 日以来的秒数: " << now << endl;

   tm *ltm = localtime(&now);

   // 打印 `tm` 结构体的各个部分
   cout << "年份: " << 1900 + ltm->tm_year << endl;
   cout << "月份: " << 1 + ltm->tm_mon << endl;
   cout << "日期: " << ltm->tm_mday << endl;
   cout << "时间: " << 5 + ltm->tm_hour << ":"
        << 30 + ltm->tm_min << ":"
        << ltm->tm_sec << endl;
}

当上述代码被编译并执行时,它会产生以下结果:

自 1970 年 1 月 1 日以来的秒数: 1588485717
年份: 2020
月份: 5
日期: 3
时间: 11:31:57
上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图