C语言获取Linux系统精确时间

gettimeofday()函数的使用方法

1.函数原型

#include <sys/time.h>

int gettimeofday(struct timeval *tv, struct timezone *tz);

2.说明

gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中

3.结构体

struct  timeval{

long  tv_sec;/*秒*/

long  tv_usec;/*微妙*/

};

struct  timezone{

int tz_minuteswest; /*和greenwich 时间差了多少分钟*/

int tz_dsttime; /*DST的校正*/

}

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <string.h>
#define SIZE_OF_DATETIME 20
void sysUsecTime(char *pTime)
{
    struct timeval    tv;
    struct timezone tz;
    int i=0;
    struct tm         *p;
    char sys_time[SIZE_OF_DATETIME+1]="";

    gettimeofday(&tv, &tz);
    p = localtime(&tv.tv_sec);
    sprintf(sys_time,"%d%d%d%d%d%d%ld",1900+p->tm_year, 1+p->tm_mon, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, tv.tv_usec);
    printf("strlen(sys_time)=[%d]\n",strlen(sys_time));
    printf("sys_time=[%s]\n",sys_time);
   /* 时间最大长度为: 年 4位、 月 2位 、日 2位 、时 2位 、分 2位 、秒 2位 毫秒 6位 = 20位 */
    /* 对不够长度的末尾补0 */

    for ( i=strlen(sys_time);i<SIZE_OF_DATETIME;i++)
    {
        sys_time[i]=‘0‘;
    }
    sys_time[SIZE_OF_DATETIME]=‘\0‘;

    strcpy(pTime,sys_time);
}

int main(void)
{
    char strusecTime[SIZE_OF_DATETIME+1];
    sysUsecTime(strusecTime);
    printf("%s\n",strusecTime);
    return 0;
}
时间: 2025-01-16 13:19:20

C语言获取Linux系统精确时间的相关文章

使用C语言获取linux系统相关信息

最近在写shell的时候,涉及到了获取环境变量参数和本地计算机相关信息,包括计算机设备名,用户名的信息,在这里简单总结一下.获取环境变量各项参数,可以直接使用getenv函数.man中关于getenv函数的声明如下: #include <stdlib.h> char *getenv(const char *name); 函数中,参数name 为环境变量的名称, 如果该变量存在则会返回指向该内容的指针. 环境变量的格式为name=value.执行成功则返回指向该内容的指针, 找不到符合的环境变量

linux系统校正时间

linux系统校正时间 cp /etc/localtime /etc/localtime.bak cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ntpdate pool.ntp.org hwclock --systohc 通过ntp服务,自动获取网络时间并同步 定时校正服务器时间 # yum install –y ntp   //安装ntp服务 # crontab -e       //打开linux定时计划任务 0 23 * * * /

linux系统的时间设定

linux系统时间分为 系统时间sys和硬件时间: 系统时间:linux内核的时间: 硬件时间:BIOS 时间: UTC时间:格林尼治时间(全球标准时间) 北京时间(东八区)=UTC+8h: 2.查看时间 date显示是系统时间: hwclock  -r   ||   hwclock   --show  显示的是硬件时间(北京时间): hwclock   -D  显示硬件(北京时间和UTC时间都有) 3.修改或者同步时间 date   -s  修改系统时间 例:date  -s  "2014-1

Linux系统的时间管理及优化

一直以来对Linux下的时间管理知之不详,GFree_wind在微博发起过几次Linux下时钟的讨论,和Godbach这些大牛比,我完全插不上话,因为不懂.近来闲暇时间研究了下Linux下的时间管理,分享出来,请大家指正.   从我们大白话的角度想,时间管理其实分成两部分,就像我们小时候学习物理的时候物理老师不断强调时间和时刻的区别.一个是时刻,比如现在是20:44:37秒,指的是时刻,我们手机上看时间,指的也是时刻.另一块是时间,比如说,我每天工作八小时,再比如说,半小时之后,我要出门了,结束

如何在 systemd 下管理Linux系统的时间和日期

timedatectl是用来查询和修改系统时间和配置的Linux应用程序.它是 systemd 系统服务管理 的一部分,并且允许你检查和修改系统时钟的配置. 在这篇文章中,我们将涉及该小巧但十分重要应用程序的所有方面. 系统当前的时间状态 想要查看系统当前日期/时间,以及可使用不带任何参数的命令查看当前系统时间配置,可以这样: # timedatectl 输入的结果就像这样: 修改日期 想要修改系统日期,你可以简单地使用timedatectl设置时间命令,紧随命令的是YYYY-MM-DD格式的日

使用C语言获取当前系统的时间

要想使用C语言来获取当前系统的时间,办法如下: 需要提前准备的工作: 1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 5 int main() 6 { 7 time_t rawtime; //时间类型,由time.h中定义 8 struct tm *timeinfo; //关于时间的结构体类型,在time.h中定义 9 timeinfo = (struct tm*)malloc(sizeo

Linux系统的时间管理

1 查看系统时间和日期 :date [[email protected] Desktop]# date  Tue Jun  2 05:25:05 EDT 2015 2查看硬件时间:hwclock --show | -r [[email protected] Desktop]# hwclock  Tue 02 Jun 2015 05:40:30 AM EDT  -0.272377 seconds 3 修改系统时间使用的命令: 修改系统时间: [[email protected] named]# d

linux系统的时间调整

以centos为例,其它系统应该是一样或者类似的. 需要用到两个命令: date 和 hwclock 其中 date 命令由 coreutils 这个包提供, hwclock 命令由 util-linux 这个包提供.看这两个包名应该可以感觉出这两个包都是属于非常基本的包,所以不用担心你的linux分发版没有这两个命令. 先说设置时间,设置时间要用到 date 命令. 来个例子: date -s "2015-12-21 13:30" 后面表示时间的字符串可以有很多种格式,具体可参考手册

oracle的sysdate和linux系统date时间不一致

Oracle 的时区可以分为两种,一种是数据库的时区,一种是 session 时区,也就是客户端连接时的时区 select sessiontimezone from dual;(客户端连接时区) select dbtimezone from dual;   (数据库时区) 2.修改数据库的时区:alter database set time_zone='+08:00' 3.重启oracle http://jingyan.baidu.com/article/86fae346870c503c4912