活用LINUX时间函数

简介: 首先分析代码,我的同事代码先用time(&timep);然后调用asctime(gmtime(&timep))得到它的格林威治时间。但localtime链接的是我国的上海时区。

       前几天同事联系我说通过localtime得到的时间总比系统时间少8个小时,于是立刻引起我的警觉。首先想到的就是时区问题,因为相差一个时区就相差一个小时,我们的北京时间属于东八区,比格林威治时间整整多8小时。


    20201214170113723.png


      首先分析代码,我的同事代码先用time(&timep);然后调用asctime(gmtime(&timep))得到它的格林威治时间。但localtime链接的是我国的上海时区。


       [testbep@system-2 ~]$ ls -l /etc/localtime
lrwxrwxrwx. 1 root root 35 Aug 15  2018 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai 

20201214172650460.png


所以如果想让gmtime(&timep)的时间和用命令date获取的时间相等,那么可以将localtime的软链接改成UTC,那么gmtime时间和date时间相等。


[testbep@rg-smp112 ~]$ ls -l /etc/localtime
lrwxrwxrwx. 1 root root 23 Dec 14 05:38 /etc/localtime -> /usr/share/zoneinfo/UTC

20201214173241243.png


lrwxrwxrwx. 1 root root 23 Dec 14 05:38 /etc/localtime -> /usr/share/zoneinfo/UTC


并附上测试代码:


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
   time_t timep;
   time(&timep);
   struct tm scf_tm;
   scf_tm=*localtime(&timep);
   printf("%s\n", asctime(gmtime(&timep)));
   printf("%d\n",scf_tm.tm_year + 1900);
   printf("%d\n",scf_tm.tm_mon);
   printf("%d\n",scf_tm.tm_mday);
   printf("%d\n",scf_tm.tm_hour);
   printf("%d\n",scf_tm.tm_min);
   printf("%d\n",scf_tm.tm_sec);
   return 0;
}


相关文章
|
存储 数据挖掘 Linux
Linux C语言之时间函数精讲
Linux C语言之时间函数精讲
221 1
|
Linux C语言 程序员
Linux系统下的单调时间函数
欢迎转载,转载请注明出处:http://forever.blog.chinaunix.net一、编写linux下应用程序的时候,有时候会用到高精度相对时间的概念,比如间隔100ms。那么应该使用哪个时间函数更准确呢?    1、time        该函数返回的是自1970年以来的秒数,显然精度不够,不能使用    2、gettimeofday        该函数返回的是自1970年以来的秒数和微秒数,精度显然是够了。
2333 0
|
Linux C++
linux中时间函数
linux下常用时间类型有四种: time_t 、  struct   tm、  struct  timeval 、    struct   timespec 1、time_t   时间函数   time_t  类型在time.
1057 0
|
Linux API
Linux时间函数及编程
所有的操作系统的运行都涉及到时间管理,一般包括:系统时间和时间计时器,linux下关于这两个也有对应的API来得到它们,下面具体描述一下: 1)linux下如何得到系统时间及特点: time_t time(time_t* tloc);//说明: 通过参数和返回值,传递从1970年1月1日0时整到现在经历的秒数。 2)各种操作time( )返回值的API:        //
1074 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
95 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
265 6
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
80 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
72 2
|
15天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
44 14
Linux 10 个“who”命令示例
下一篇
DataWorks