C++ Linux - 将时区更改为某个时区

标签 c++ linux

我正在尝试将我的服务器时间与客户端时间同步,我得到了获取服务器时间的代码,如下所示。如果我在服务器中运行它,则在客户端登录时。我将时间发送给客户端,但是如何将“客户端”系统时间更改为我从服务器发送的时间。

我在 google 上搜索了 setenv 之类的东西,但我们如何在 Linux C++ 中实际更改时间?

使用下面的代码,我可以获得当前时间:

/* localtime example */
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );

  return 0;
}

最佳答案

Linux(或 Unix,或 Posix)系统从 unix epoch 开始测量时间.最低级别(与时间相关的 syscalls 和内核)真正不涉及时区。时区是图书馆的东西,通过 localtime(3)strftime(3)和其他功能。

另请阅读 time(7)手册页。

你真的想使用 NTP protocol 同步时间(在本地和远程机器上) (使用 ntpdchronyntpdate ....),或者至少使用 rdate(但最好使用 NTP ).

查询时间的系统调用是gettimeofday(2) , time(2) , clock_gettime(2)使用 CLOCK_REALTIME

您可能会使用 settimeofday(2)adjtimex(2)系统调用来设置时间。这通常需要 root 权限。

关于C++ Linux - 将时区更改为某个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033512/

相关文章:

c++ - 在二进制文件中的位置读取和输出字节(C++)

linux - 将模块.C添加到linux内核

java - C++ 套接字消息包含额外的 ASCII 0 字符

c++ mysql连接器从字符串中选择id

c++ - 哪个(如果有)实现 Windows 原生外观 : GTK+, wxWidgets、Qt、FLTK?

linux - 在 Linux 中,有一系列假定按顺序命名的文件,我如何进行检查以验证所有文件是否确实存在?

linux - echo 'b' >>/proc/sysrq-trigger 和reboot有什么区别?

c++ - mqd_t,发送和接收消息

c++ - Valgrind 错误因操作系统而异

c++ opencv findHomography()函数中的未定义关系