请告诉我是否有办法可以找到自过去一天以来所花费的天数(请查看下面的代码)。如果我在2009年有一天的字符串,我如何将它与当天比较并显示它已经过了多少天?
#include <time.h>
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
int main ()
{
string olday = "05 14 2009";
const int MAXLEN = 80;
char newday[MAXLEN];
time_t t = time(0);
strftime(newday, MAXLEN, "%m %d %Y", localtime(&t));
cout <<"Current day is: "<<newday << '\n';
cout <<"Days spent since olday: "<<???? << '\n';
return 0;
}
Microsoft visual studio 2010 c ++控制台
答案 0 :(得分:5)
你可以使用difftime。
http://www.cplusplus.com/reference/clibrary/ctime/difftime/
由于它以秒为单位给出差异,因此很容易转换为天,月等等。
答案 1 :(得分:4)
首先,您需要将olday字符串转换为更有用的字符串。这样做的方法是创建struct tm
并填写值。然后使用mktime()
将struct tm转换为time_t,并将difftime()
与time_t
值一起使用。并且从几秒钟转换为几天。
//create a local tm struct
struct tm old_day ;
//since it's a local, zero it out
memset(&old_day, 0, sizeof(struct tm)) ;
//fill in the fields
old_day.tm_year = 109 ; //years past 1900
old_day.tm_mon = 4 ;//0-indexed
//convert to a time_t
time_t t_old = mktime(&old_day) ;