当前位置: 首页 > news >正文

[C++] 时间处理库函数 | `tm`、`mktime` 和 `localtime`

在编程中,处理日期和时间是一个常见的需求

C++ 提供了一些强大的库函数来帮助我们完成这些任务。本文将通过一个简单的代码示例,介绍 tm 结构体、mktimelocaltime 这三个关键函数的作用和用法。

代码

在这里插入图片描述

调用库函数code

class Solution {const string weekdays[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
public:string dayOfTheWeek(int day, int month, int year) {tm dt = {0, 0, 0, day, month - 1, year - 1900};//structtime_t t = mktime(&dt);//tm turn timestampreturn weekdays[localtime(&t)->tm_wday];//timestamp turn local//catch wday}
};

解释

1. tm 结构体

在这里插入图片描述

tm 是 C/C++ 中用于表示日期和时间的一个结构体,定义在 <ctime> 头文件中。它的成员如下:

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 表示一月)int tm_year;  // 年(从 1900 年开始的偏移量,例如 2023 年为 123)int tm_wday;  // 星期几(0-6,0 表示周日)int tm_yday;  // 一年中的第几天(0-365)int tm_isdst; // 夏令时标志(正数表示启用,0 表示不启用,负数表示未知)
};

在代码中,我们初始化了一个 tm 结构体 dt

tm dt = {0, 0, 0, day, month - 1, year - 1900};
  • tm_mon 设置为 month - 1,因为月份是从 0 开始计数的
  • tm_year 设置为 year - 1900,因为年份是从 1900 年开始的偏移量。

2. mktime 函数

在这里插入图片描述

mktime 函数的作用是将一个 tm 结构体转换为 time_t 类型的时间值(通常是从 1970 年 1 月 1 日开始的秒数)。它的原型如下:

time_t mktime(struct tm* timeptr);

在代码中,我们调用:

time_t t = mktime(&dt);

mktime 会修正 tm 结构体中的不合理值(例如,如果 tm_mday 超过了该月的天数,它会自动调整月份和年份),并返回一个 time_t 类型的时间戳。


3. localtime 函数

在这里插入图片描述

localtime 函数的作用是将 time_t 类型的时间戳转换为本地时间的 tm 结构体。它的原型如下:

struct tm* localtime(const time_t* timer);

在代码中,我们调用:

localtime(&t)->tm_wday

localtime(&t) 返回一个指向 tm 结构体的指针,其中的 tm_wday 成员表示星期几(0 表示周日,1 表示周一,依此类推)。我们通过这个值从 weekdays 数组中获取对应的星期名称。


总结

  • tm 结构体:用于表示日期和时间的各个组成部分。
  • mktimetm 结构体转换为 time_t 时间戳,并自动修正不合理的日期值。
  • localtime:将 time_t 时间戳转换为本地时间tm 结构体。
http://www.dtcms.com/a/571013.html

相关文章:

  • 做网站和维护要多少钱wordpress课程管理系统
  • 电商网站开发报价单格斗网页游戏大全
  • 博罗网站设计公司做网络推广有哪些平台
  • 如何建设旅游网站wordpress 子主题开发
  • 北京微网站建设设计服务公司网站备案撤销
  • 建设网站用什么软件发布网站建设信息
  • 想做外贸做哪些网站php笑话网站源码
  • 常用CMake指令
  • php免费网站源码瀑布流网站源码
  • 实战营销型网站建设备案信息查询
  • Spring Boot3零基础教程,消息传递是响应式核心,笔记103
  • 南京设计网站的公司在腾讯云怎样建设网站
  • 中职商务网站建设课件wordpress如何修改文章路径
  • 做微信小程序的网站设计单位有哪些公司
  • 持续集成与持续部署
  • 网站现在如何做推广wordpress增加字段
  • 国外 网站网站免费版个人简历
  • 建设银行的网站用户名是什么深圳网站设计公司费用是
  • ros中如何进行各个传感器数据时间同步?
  • 图片网站php源码私人建设网站
  • 个人网银工作执行总结
  • 网站自适应是什么做的东莞商城网站建设公司
  • 网站跳出率 查询网站页面布局和样式设计
  • 深圳网站网页制作公司泉州公司网站建设
  • vps建设网站最近七天的新闻重点
  • 河南周口东宇网站建设怎样申请建立自助网站
  • 网络服务商基本网络参数谷歌seo顾问
  • 专门做调研的网站专业的wap网站开发
  • 做公司网站思路郑州营销型网站建设哪家好
  • 网站上线步骤cms管理什么意思