GNU/Linux >> Tutoriales Linux >  >> Linux

Obtenga segundos desde la época en Linux

En C.

time(NULL);

En C++.

std::time(0);

Y el valor de retorno del tiempo es:time_t no mucho tiempo


La función nativa de Linux para obtener el tiempo es gettimeofday() [también hay otros sabores], pero eso te da el tiempo en segundos y nanosegundos, que es más de lo que necesitas, así que te sugiero que sigas usando time() . [Por supuesto, time() se implementa llamando a gettimeofday() en algún momento, pero no veo el beneficio de tener dos piezas de código diferentes que hagan exactamente lo mismo, y si quisieras eso, estarías usando GetSystemTime() o algo así en Windows [no estoy seguro de que sea el nombre correcto, ha pasado un tiempo desde que programé en Windows]


Ya lo estás usando:std::time(0) (no te olvides de #include <ctime> ). Sin embargo, si std::time en realidad devuelve el tiempo desde que la época no se especifica en el estándar (C11, al que hace referencia el estándar C++):

7.27.2.4 El time función

Sinopsis

#include <time.h>
time_t time(time_t *timer);

Descripción

La función de hora determina la hora actual del calendario. La codificación del valor no está especificada. [énfasis mío]

Para C++, C++11 y versiones posteriores, proporcione time_since_epoch . Sin embargo, antes de C++20 la época de std::chrono::system_clock no estaba especificado y, por lo tanto, posiblemente no era portátil en los estándares anteriores.

Aún así, en Linux el std::chrono::system_clock generalmente usará Unix Time incluso en C++11, C++14 y C++17, por lo que puede usar el siguiente código:

#include <chrono>

// make the decltype slightly easier to the eye
using seconds_t = std::chrono::seconds;

// return the same type as seconds.count() below does.
// note: C++14 makes this a lot easier.
decltype(seconds_t().count()) get_seconds_since_epoch()
{
    // get the current time
    const auto now     = std::chrono::system_clock::now();

    // transform the time into a duration since the epoch
    const auto epoch   = now.time_since_epoch();

    // cast the duration into seconds
    const auto seconds = std::chrono::duration_cast<std::chrono::seconds>(epoch);
    
    // return the number of seconds
    return seconds.count();
}

Linux
  1. Obtener la edad del archivo dado?

  2. Linux:¿por qué las utilidades de Linux no utilizan una llamada al sistema para obtener la hora actual?

  3. Linux:¿cómo obtener la hora del reloj de pared de un proceso en ejecución?

  4. Obtenga el tiempo de creación de archivos con Python en Linux

  5. Estados de proceso de Linux

Cómo probar la velocidad de carga del sitio web en la terminal de Linux

Comando de tiempo de Linux

Obtener información de la CPU en Linux

Último comando en Linux

Comprobar la zona horaria en Linux

Cómo obtener su dirección IP en Linux