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(时间戳转换成时间)

posted @ 2021-05-08 17:24  nmhome  阅读(758)  评论(0编辑  收藏  举报