首页 > 解决方案 > 添加超过 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++visual-c++

解决方案


C++ 中的日期/时间处理既尴尬又尴尬。Howard Hinnant 有一个很棒的图书馆,你可能想看看:

https://github.com/HowardHinnant/date

问题很复杂。如果您使用本地日期,由于夏令时和闰秒,您无法添加固定的时间量。您可以使用 GMT,但仍会受到闰秒的影响。

但是霍华德的图书馆让你更容易做到这一点。我想看看。


推荐阅读