c++ 实现当前的时间加5分钟后获得时间
之前经常写C#,在.net库中对时间的封装是很完善的,转过来写c++发现好多轮子都要自己造。
在当前的时间上加上指定的时长思路是:获取当前时间的时间戳(秒数),在把需要添加的时间换算成秒加入当前的时间戳。
代码实现:
#include <iostream>
#include <time.h>
#include <string>
#include <chrono>
using namespace std;
using namespace std::chrono;
typedef struct times
{
int Year;
int Mon;
int Day;
int Hour;
int Min;
int Second;
} Times;
Times stamp_to_standard(size_t stampTime)
{
time_t tick = (time_t)stampTime;
struct tm tm;
char s[100];
Times standard;
tm = *localtime(&tick);
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", &tm);
printf("%d: %s\n", (int)tick, s);
standard.Year = atoi(s);
standard.Mon = atoi(s + 5);
standard.Day = atoi(s + 8);
standard.Hour = atoi(s + 11);
standard.Min = atoi(s + 14);
standard.Second = atoi(s + 17);
return standard;
}
size_t getTime()
{
system_clock::duration d = system_clock::now().time_since_epoch();
minutes min = duration_cast<minutes>(d);
seconds sec = duration_cast<seconds>(d);
milliseconds mil = duration_cast<milliseconds>(d);
microseconds mic = duration_cast<microseconds>(d);
nanoseconds nan = duration_cast<nanoseconds>(d);
cout << min.count() << "分钟" << endl;
cout << sec.count() << "秒" << endl;
cout << mil.count() << "毫秒" << endl;
cout << mic.count() << "微妙" << endl;
cout << nan.count() << "纳秒" << endl;
return sec.count();
}
int main()
{
size_t times = getTime();
stamp_to_standard(times);
cout << "current time + 5 min" << endl;
size_t t2 = times + 5 * 60;
stamp_to_standard(t2);
return 0;
}
结果:
27007752分钟
1620465179秒
1620465179028毫秒
1620465179028321微妙
1620465179028321386纳秒
1620465179: 2021-05-08 17:12:59
current time + 5 min
1620465479: 2021-05-08 17:17:59
参考资料:
https://blog.csdn.net/weixin_41855721/article/details/81810692(获取时间戳 秒数)
https://blog.csdn.net/e295166319/article/details/72846760(时间戳转换成时间)