我想在c/c ++中得到当前(或任何给定的)小时开始的unix时间戳.
我有这个:
time_t get_current_hour() {
time_t beginning_of_hour;
struct tm * ptm;
time(&beginning_of_hour);
ptm = gmtime(&beginning_of_hour);
ptm->tm_min = 0;
ptm->tm_sec = 0;
ptm->tm_zone = (char*) "GMT";
beginning_of_hour = mktime(ptm);
return beginning_of_hour;
}
哪个有效,但在高负荷下,许多结果不是当前时间的开始而是实际时间.
有没有更好的方法来解决这个问题?为什么函数返回当前时间?
请告知,Akos
你可以做到这一切time_t,而不是分开和重建.
将它向下舍入到3600的倍数:
time_t get_current_hour(void) {
time_t now;
time(&now);
return now - (now % 3600);
}
Run Code Online (Sandbox Code Playgroud)
time_t将整数视为整数可能并不好.但是我认为它可以保证是自纪元以来的几秒钟,所以应该没问题.