已解决
【小算法】chrono 库实现时间戳转换
来自网友在路上 152852提问 提问时间:2023-11-02 00:34:42阅读次数: 52
最佳答案 问答题库528位专家为你答疑解惑
背景
使用 C++ 的 chrono 库 的方法来实现时间戳转换问题。
方法
- 简化
#include <ctime>
#include <chrono>
#include <iomanip>
using sys_clock = std::chrono::system_clock;
using time_point_t = sys_clock::time_point;
using time_duration_t = sys_clock::duration; // 时间间隔
- 获取当前时间
time_point_t getNowTimePoint() {return sys_clock::now();
}
- 时间戳比较
bool cmpTimePoint(time_point_t &time1, time_point_t &time2) {return time1 < time2;
}
- 获取之前(或之后)的一个时间点
// 1小时
time_duration_t m_hour_duration = std::chrono::hours(1);// 1 天
time_duration_t m_day_duration = std::chrono::hours(24 * 1); // 时间前
time_point_t getBeforeTimePoint(time_point_t &tp, time_duration_t &dur) {return tp - dur;
}// 时间后
time_point_t getAfterTimePoint(time_point_t &tp, time_duration_t &dur) {return tp + dur;
}
- 时间戳转字符串
// 转成 "YYYYmmDDTHHMMSS111" 格式,精确到 ms
std::string getTimeStr(time_point_t &tp) {std::time_t time = sys_clock::to_time_t(tp);auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(tp.time_since_epoch());auto millis = ms.count() % 1000;std::ostringstream oss;oss << std::put_time(std::localtime(&time), "%Y%m%dT%H%M%S")<< std::setw(3) << std::setfill('0') << millis;return oss.str();
}
- 字符串转时间戳
// 从 "YYYYmmDDTHHMMSS111" 转入
time_point_t getTimePointFromStr(const std::string &raw_time) {std::istringstream ss(raw_time);std::tm tm{};ss >> std::get_time(&tm, "%Y%m%dT%H%M%S");std::time_t time = std::mktime(&tm);return sys_clock::from_time_t(time);
}
结论
通过灵活使用 c++ 中的 std::chrono 库实现时间戳比 c 语言的方法要更方便。
查看全文
99%的人还看了
相似问题
- 时态图根据时间轴动态播放热力图
- 微信小程序发货信息录入接口 错误上传时间非法,请按照 RFC 3339 格式填写?
- 时间序列预测实战(十七)PyTorch实现LSTM-GRU模型长期预测并可视化结果(附代码+数据集+详细讲解)
- 设置指定时间之前的时间不可选
- C#关于TimeSpan结构的使用和获取两个时间差
- c++ 获取当前时间(精确至秒、毫秒和微妙)
- ChatGpt3.5已经应用了一段时间,分享一些自己的使用心得.
- java 统计代码运行时间
- 个人博客添加访问人数以及访问时间-githubpage
- 多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测
猜你感兴趣
版权申明
本文"【小算法】chrono 库实现时间戳转换":http://eshow365.cn/6-29748-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!