GNU/Linux >> Tutoriels Linux >  >> Linux

Définir la date et l'heure du système à l'aide de C++ sous Linux

Vous comprenez mal. settimeofday(2) définit l'heure de l'époque. qui est à la fois la date et l'heure. Temps de lecture(7)

Donc, si vous partez d'une chaîne exprimant une date, convertissez cette chaîne avec strptime(3) en un struct tm puis convertissez-le en heure Unix avec mktime(3) puis alimentez-le en settimeofday (c'est-à-dire le tv_sec champ).

Cependant, settimeofday nécessite le privilège root et je pense que vous devriez généralement éviter de l'appeler (au moins sur les ordinateurs habituels connectés à Internet). Mieux vaut définir un service client NTP sur votre PC Linux (par exemple, exécutez ntpd ou chrony et plus généralement lisez le chapitre sysadmin sur le maintien de l'heure ...). Voir aussi adjtimex(2)

BTW, changer brusquement l'heure système sur un système multi-tâches - comme Linux ou Windows - est une opération très dangereuse (car elle perturbera et perturbera de nombreuses tâches système en fonction ou en utilisant le temps). Il y a peu de bonnes raisons de le faire (c'est une très mauvaise idée en général). Si vous faites cela, faites-le avec très peu de programmes et de services en cours d'exécution (par exemple, Linux en mode mono-utilisateur). Vous ne devriez pas faire cela dans le code d'application ordinaire.


J'écris ce morceau de code pour définir la date et l'heure sous 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);
}

Notez que stime nécessite root privilèges.


Linux
  1. Utilisation de la commande timedatectl pour modifier l'heure et la date sur le système Linux RHEL7

  2. Automatiser la réponse à l'aide de Expect et Autoexpect sous Linux

  3. Définir la date, l'heure et le fuseau horaire sur un serveur Linux

  4. Comment afficher la date et l'heure de redémarrage du système Linux

  5. Définir l'heure relative à l'aide de la ligne de commande

Comment régler la date et l'heure dans Rocky et AlmaLinux

Comment trouver la date et l'heure d'installation du système d'exploitation Linux

Comment définir la date et l'heure sur Rocky Linux 8 Desktop et Server

Comment vérifier l'historique de redémarrage du système et l'heure de démarrage sous Linux

Comment définir la date et l'heure sous Linux

Comment changer la date, l'heure et le fuseau horaire dans Linux Mint 20