如何从日期中减去时间 有标准的C++时间类,它有减法的方法 例如: 我想从这样的日期(2014年1月1日周一00:05)减去10分钟,得到这样的日期(2013年12月31日23:55)

如何从日期中减去时间 有标准的C++时间类,它有减法的方法 例如: 我想从这样的日期(2014年1月1日周一00:05)减去10分钟,得到这样的日期(2013年12月31日23:55),c++,datetime,time,timespan,C++,Datetime,Time,Timespan,如果“struct tm”类型有这样的函数,那就太棒了。显示了足够的函数(mktime、localtime),可以用time转换struct tm。时间的计算是显而易见的,因为它是一种积分类型,传统上表示自1970年新年以来的秒数。我不知道是否有任何方法可以计算struct tm,但我认为您应该阅读C++11中提供的chrono。 如果可以使用C++11,则可以轻松地减去和添加日期: #include <iostream> #include <chrono> #inclu

如果“struct tm”类型有这样的函数,那就太棒了。显示了足够的函数(mktime、localtime),可以用
time
转换
struct tm
。时间的计算是显而易见的,因为它是一种积分类型,传统上表示自1970年新年以来的秒数。

我不知道是否有任何方法可以计算
struct tm
,但我认为您应该阅读
C++11
中提供的
chrono

如果可以使用C++11,则可以轻松地减去和添加日期:

#include <iostream>
#include <chrono>
#include <ctime>
#include <ratio>
using namespace std;

int main ()
{
  chrono::system_clock::time_point today = chrono::system_clock::now();
  chrono::system_clock::duration dtn (chrono::duration<int,ratio<60,1>>(10));

  time_t t = chrono::system_clock::to_time_t(today-dtn);
  cout << ctime(&t) << endl;

  return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
chrono::system_clock::time_point today=chrono::system_clock::now();
时钟:系统时钟:持续时间dtn(时钟:持续时间(10));
时间t=时钟::系统时钟::到时间t(今天dtn);

当然,还有
difftime
,离
struct tm
只有
mktime
距离
chrono
对处理日历日期没有帮助。你需要
mktime
和来自C库的朋友,或者像Boost.DateTime这样的第三方库。