65,187
社区成员




#include <iostream>
#include <string>
#include <time.h>
using namespace std;
string DatetimeAdd(const char* time, int num, char type)
{
time_t secs = 0;
switch (type)
{
case 'D':
secs = num * 24 * 60 * 60;
break;
case 'H':
secs = num * 60 * 60;
break;
case 'M':
secs = num * 60;
break;
case 'S':
secs = num;
break;
default:
return "";
}
struct tm _tmp;
strptime(time, "%Y-%m-%d %T", &_tmp);
time_t oldTime = mktime(&_tmp);
oldTime += secs;
struct tm* _res = localtime(&oldTime);
char buf[20];
sprintf(buf,"%04d-%02d-%02d %02d:%02d:%02d", _res->tm_year + 1900, _res->tm_mon + 1, _res->tm_mday,
_res->tm_hour, _res->tm_min, _res->tm_sec);
return string(buf);
}
int main()
{
char buf[20] = "2010-02-14 14:02:38";
cout << DatetimeAdd(buf, 8, 'D');
return 0;
}
#include<iostream>
#include<ctime>
#include<stdlib.h>
using namespace std;
int main(int argc, char* argv[])
{
char time[] = "2009-10-25 12:34:23";
struct tm t;
sscanf(time,"%d-%d-%d %d:%d:%d",&t.tm_year, &t.tm_mon, &t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec);
t.tm_year -= 1900;
t.tm_mon -= 1;
int diff = 0;
char type = 'D';
scanf("%d %c", &diff, &type);
time_t cur_t = 0;
cur_t = mktime(&t);
switch(type)
{
case 'D':
cur_t = cur_t + diff * 24 * 60 * 60;
break;
case 'H':
cur_t += diff * 60 * 60;
break;
case 'M':
cur_t += diff * 60;
break;
case 'S':
cur_t += diff;
break;
}
printf(asctime(&t));
printf(ctime(&cur_t));
return 0;
}