c++ - 添加超过 30 天到 1900-01-01
问题描述
如何在 C++ 中将超过 30 天的时间添加到大约 1900-01-01 日期。超过 1000 天,然后time_t
在添加后格式化以获得完整的日期。
这是我到目前为止所尝试的:
int tmp = 1000;
struct std::tm tm;
std::istringstream ss("1900-01-01");
ss >> std::get_time(&tm, "%Y-%m-%d");
tm.tm_mday = tm.tm_mday + tmp;
return mktime(&tm);
解决方案
C++ 中的日期/时间处理既尴尬又尴尬。Howard Hinnant 有一个很棒的图书馆,你可能想看看:
https://github.com/HowardHinnant/date
问题很复杂。如果您使用本地日期,由于夏令时和闰秒,您无法添加固定的时间量。您可以使用 GMT,但仍会受到闰秒的影响。
但是霍华德的图书馆让你更容易做到这一点。我想看看。
推荐阅读
- node.js - Docusign 从模板发送信封不显示选项卡(节点)
- ios - iOS 中的 Flutter 发布失败,errSecInternalComponent 命令 PhaseScriptExecution 失败,退出代码为非零
- java - 将堆栈顶部放置在链接链的末尾而不是开头
- ssas - 将属性绑定到 NameColumn 并将属性绑定到 KeyColumn 的目的是什么?
- linux - 使用 openvpen 而不是 openvpn3 连接到 staging vpn
- django - Django项目中docker-compose中的Postgres连接问题
- amazon-web-services - 调用 SSH 时 Shell 脚本停止
- elasticsearch - Elasticsearch 对过滤条件组进行“或”搜索
- c++ - 部分模板特化:std::allocator_traits?
- homebrew - 尝试在 MacOS 上更新 Homebrew 但收到错误消息“LibreSSL 错误”