活用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语言之时间函数精讲
448 1
|
Linux C语言 程序员
Linux系统下的单调时间函数
欢迎转载,转载请注明出处:http://forever.blog.chinaunix.net一、编写linux下应用程序的时候,有时候会用到高精度相对时间的概念,比如间隔100ms。那么应该使用哪个时间函数更准确呢?    1、time        该函数返回的是自1970年以来的秒数,显然精度不够,不能使用    2、gettimeofday        该函数返回的是自1970年以来的秒数和微秒数,精度显然是够了。
2480 0
|
Linux C++
linux中时间函数
linux下常用时间类型有四种: time_t 、  struct   tm、  struct  timeval 、    struct   timespec 1、time_t   时间函数   time_t  类型在time.
1174 0
|
Linux API
Linux时间函数及编程
所有的操作系统的运行都涉及到时间管理,一般包括:系统时间和时间计时器,linux下关于这两个也有对应的API来得到它们,下面具体描述一下: 1)linux下如何得到系统时间及特点: time_t time(time_t* tloc);//说明: 通过参数和返回值,传递从1970年1月1日0时整到现在经历的秒数。 2)各种操作time( )返回值的API:        //
1129 0
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
423 1
二、Linux文本处理与文件操作核心命令
|
2月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
293 137
|
2月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
683 57
|
1月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
407 2
|
2月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
274 0
Linux内存问题排查命令详解