GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Stellen Sie Systemdatum und -zeit mit C++ unter Linux ein

Du verstehst falsch. settimeofday(2) setzt die Epochenzeit. das ist sowohl Datum als auch Uhrzeit. Lesezeit(7)

Wenn Sie also mit einem String beginnen, der ein Datum ausdrückt, konvertieren Sie diesen String mit strptime(3) in einen struct tm Konvertieren Sie diese dann mit mktime(3) in eine Unix-Zeit und füttern Sie diese dann mit settimeofday (also die tv_sec Feld).

Allerdings settimeofday erfordert Root-Privilegien und ich glaube, Sie sollten es normalerweise vermeiden, es aufzurufen (zumindest auf normalen, mit dem Internet verbundenen Computern). Richten Sie besser einen NTP-Client-Dienst auf Ihrem Linux-PC ein (z. B. führen Sie ntpd oder chrony aus und lesen Sie allgemein das Sysadmin-Kapitel zum Halten der Zeit ...). Siehe auch adjtimex(2)

Übrigens, das abrupte Ändern der Systemzeit auf einem Multitasking-System - wie Linux oder Windows - ist eine sehr gefährliche Operation (da es viele Systemaufgaben stören und stören wird, abhängig von oder mit der Zeit). Es gibt wenige gute Gründe dafür (es ist im Allgemeinen eine sehr schlechte Idee). Wenn Sie dies tun, tun Sie dies mit sehr wenigen laufenden Programmen und Diensten (z. B. Linux im Einzelbenutzermodus). Sie sollten dies nicht in gewöhnlichem Anwendungscode tun.


Ich schreibe diesen Code, um Datum und Uhrzeit unter Linux einzustellen.

#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);
}

Beachten Sie, dass stime erfordert root Privilegien.


Linux
  1. Verwenden des Befehls timedatectl zum Ändern von Uhrzeit und Datum auf einem RHEL7-Linux-System

  2. Automatisierte Antwort mit Expect und Autoexpect in Linux

  3. Stellen Sie Datum, Uhrzeit und Zeitzone auf einem Linux-Server ein

  4. So zeigen Sie das Datum und die Uhrzeit des Neustarts des Linux-Systems an

  5. Stellen Sie die relative Zeit über die Befehlszeile ein

So stellen Sie Datum und Uhrzeit in Rocky und AlmaLinux ein

So finden Sie das Installationsdatum und die Uhrzeit des Linux-Betriebssystems

So stellen Sie Datum und Uhrzeit auf Rocky Linux 8 Desktop und Server ein

So überprüfen Sie den Systemneustartverlauf und die Startzeit in Linux

So stellen Sie Datum und Uhrzeit unter Linux ein

So ändern Sie Datum, Uhrzeit und Zeitzone in Linux Mint 20