获取当前小时的unix时间戳

Ako*_*kos 4 c c++ timestamp

我想在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

ugo*_*ren 6

你可以做到这一切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将整数视为整数可能并不好.但是我认为它可以保证是自纪元以来的几秒钟,所以应该没问题.