Linux下UTC时间修改为GMT时间

本文介绍了解决Linux系统中时间和本地时间不一致的问题。通过调整时区设置和使用ntpdate命令同步网络时间,确保系统时间准确。文章还提供了具体的命令行操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在调试机器的时候发现系统时间和本地时间一直对不上,开始还以为是时间有误,


然后查找到使用ntpdate -u 211.115.194.21 同步了一下网络时间,不过还是不对,对比之后发现和本地只见总是相差八个小时,


再在网上找就找到是时区的问题,机器上使用的是UTC,需要更正为GMT的。在网上找了一下,都是复制粘贴,内容有点残缺,改完之后就算是在这里记录一下了。


先使用date查看时间,可以看到后缀带的是UTC时间,比如这样:Tue Jan 17 08:30:10 UTC 2017

将GMT时区数据复制到localtime文件

cp /usr/share/zoneinfo/GMT /etc/localtime

然后设置时区

ln -sf /usr/share/zoneinfo/Asia/Shanghai    /etc/localtime  #linux的时区设置为上海时区


再就是同步网络时间:ntpdate -u 211.115.194.21

然后设置硬件时间:./usr/sbin/hwclock --systohc

我机器上到这一步就都正常了。。。

### Linux 系统中 UTC 时间设置与转换方法 #### 1. UTCCST 的基本概念 在 Linux 系统中,UTC(协调世界时)是一个全球统一的时间标准,而 CST(中国标准时间)属于东八区的时间。两者的区别在于时区偏移量,CSTUTC 快 8 小时[^3]。 #### 2. Ubuntu 中启用本地时间而非 UTC 如果希望在 Ubuntu 或其他基于 Debian 的系统上禁用 UTC 并改用本地时间,则可以通过编辑 `/etc/default/rcS` 文件实现此功能。具体操作为将 `UTC=yes` 修改为 `UTC=no`,从而让 BIOS 使用本地时间作为基准[^1]。 #### 3. 转换 UTC 到本地时间的方法 对于程序开发而言,在 C/C++ 编程环境中可利用标准库函数完成从 UTC 至本地时间的转换工作。例如通过调用 `gmtime()` 函数解析得到格林尼治时间结构体后再借助 `mktime()` 返回对应当地时间戳值来达到目的;或者直接采用更高级别的接口如 `std::chrono` 提供的相关类来进行跨平台兼容性强的操作[^2]。 以下是使用 C 实现的一个简单例子: ```c #include <stdio.h> #include <time.h> int main() { time_t rawtime; struct tm *info; time(&rawtime); // 获取当前日历时刻 info = gmtime(&rawtime); // 转换成GMT表示形式 printf("UTC Time: %s", asctime(info)); info = localtime(&rawtime); // 转换成当地时区表示形式 printf("Local Time: %s", asctime(info)); return 0; } ``` 上述代码展示了如何分别打印出当前系统的 UTC 及本地时间字符串表达方式。 #### 4. 内核层面的时间获取与转换机制 深入到操作系统内部来看待这一过程的话,Linux 内核提供了专门用于查询实时钟的服务——即所谓的 gettimeofday 系统调用。当应用程序请求读取当前日期和时间信息时,内核会先确定硬件维护的基础计数器所指示的具体数值再考虑是否需要应用任何额外调整项最终得出结果反馈给用户空间进程[^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值