GNU/Linux >> Tutoriales Linux >  >> Linux

Establezca la fecha y la hora del sistema usando C++ en Linux

Entiendes mal. settimeofday(2) está configurando la hora de Epoch. que es tanto la fecha como la hora. Tiempo de lectura(7)

Entonces, si comienza desde una cadena que expresa una fecha, convierta esa cadena con strptime (3) en un struct tm luego conviértalo a un tiempo de Unix con mktime (3) y luego aliméntelo a settimeofday (es decir, el tv_sec campo).

Sin embargo, settimeofday requiere privilegios de root y creo que por lo general debe evitar llamarlo (al menos en las computadoras habituales conectadas a Internet). Mejor configure algún servicio de cliente NTP en su PC con Linux (por ejemplo, ejecute ntpd o chrony y, de manera más general, lea el capítulo de administración de sistemas sobre cómo mantener el tiempo...). Véase también adjtimex(2)

Por cierto, cambiar abruptamente la hora del sistema en un sistema multitarea -como Linux o Windows- es una operación muy peligrosa (ya que alterará y perturbará muchas tareas del sistema dependiendo o usando la hora). Hay pocas buenas razones para hacer eso (es una muy mala idea en general). Si hace eso, hágalo con muy pocos programas y servicios en ejecución (por ejemplo, modo de usuario único Linux). No debe hacer eso en el código de aplicación ordinario.


Escribo este fragmento de código para establecer la fecha y la hora en Linux.

#include <time.h>

struct tm time = { 0 };

time.tm_year = Year - 1900;
time.tm_mon  = Month - 1;
time.tm_mday = Day;
time.tm_hour = Hour;
time.tm_min  = Minute;
time.tm_sec  = Second;

if (time.tm_year < 0)
{
    time.tm_year = 0;
}

time_t t = mktime(&time);

if (t != (time_t) -1)
{
    stime(&t);
}

Tenga en cuenta que stime requiere root privilegios.


Linux
  1. Uso del comando timedatectl para cambiar la hora y la fecha en el sistema RHEL7 Linux

  2. Automatice la respuesta usando Expect y Autoexpect en Linux

  3. Establecer la fecha, la hora y la zona horaria en un servidor Linux

  4. Cómo ver la fecha y hora de reinicio del sistema Linux

  5. Establecer el tiempo relativo usando la línea de comando

Cómo configurar la fecha y la hora en Rocky y AlmaLinux

Cómo encontrar la fecha y hora de instalación del sistema operativo Linux

Cómo configurar la fecha y la hora en el escritorio y el servidor Rocky Linux 8

Cómo verificar el historial de reinicio del sistema y el tiempo de inicio en Linux

Cómo configurar la fecha y la hora en Linux

Cómo cambiar la fecha, la hora y la zona horaria en Linux Mint 20