C语言中settimeofday函数和gettimeofday函数的使用

 更新时间:2015年08月27日 10:00:13   投稿:goldensun  
这篇文章主要介绍了C语言中的settimeofday函数和gettimeofday函数的使用,注意settimeofday()函数只返回0和-1,需要的朋友可以参考下

C语言settimeofday()函数:设置当前时间戳
头文件:

#include <sys/time.h>  #include <unistd.h>

定义函数:

int settimeofday(const struct timeval *tv, const struct timezone *tz);

函数说明:settimeofday()会把目前时间设成由tv 所指的结构信息,当地时区信息则设成tz 所指的结构。详细的说明请参考gettimeofday()。

注意,在Linux下,只有root 权限才能使用此函数修改时间。

返回值:成功则返回0,失败返回-1,错误代码存于errno。

错误代码:
EPERM  并非由root 权限调用settimeofday(),权限不够。
EINVAL  时区或某个数据是不正确的,无法正确设置时间。

C语言gettimeofday()函数:获取当前时间
头文件:

#include <sys/time.h>  #include <unistd.h>

定义函数:int gettimeofday (struct timeval * tv, struct timezone * tz);

函数说明:gettimeofday()会把目前的时间有tv 所指的结构返回,当地时区的信息则放到tz 所指的结构中。

timeval 结构定义为:

struct timeval{
  long tv_sec; //秒
  long tv_usec; //微秒
};

timezone 结构定义为:

struct timezone
{
  int tz_minuteswest; //和Greenwich 时间差了多少分钟
  int tz_dsttime; //日光节约时间的状态
};

上述两个结构都定义在/usr/include/sys/time.h. tz_dsttime 所代表的状态如下

  DST_NONE //不使用
  DST_USA //美国
  DST_AUST //澳洲
  DST_WET //西欧
  DST_MET //中欧
  DST_EET //东欧
  DST_CAN //加拿大
  DST_GB //大不列颠
  DST_RUM //罗马尼亚
  DST_TUR //土耳其
  DST_AUSTALT //澳洲(1986 年以后)

返回值:成功则返回0,失败返回-1,错误代码存于errno。

附加说明:EFAULT 指针tv 和tz 所指的内存空间超出存取权限。

范例

#include <sys/time.h>
#include <unistd.h>
main(){
  struct timeval tv;
  struct timezone tz;
  gettimeofday (&tv, &tz);
  printf("tv_sec; %d\n", tv.tv_sec);
  printf("tv_usec; %d\n", tv.tv_usec);
  printf("tz_minuteswest; %d\n", tz.tz_minuteswest);
  printf("tz_dsttime, %d\n", tz.tz_dsttime);
}

执行结果:

tv_sec: 974857339
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:0

相关文章

  • C/C++宽窄字符转换与输出的多种实现方法

    C/C++宽窄字符转换与输出的多种实现方法

    本文主要介绍了C/C++宽窄字符转换与输出的多种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 详解C++何时需要拷贝构造函数

    详解C++何时需要拷贝构造函数

    拷贝构造函数是一个特殊的构造函数,用于创建一个新对象,该对象与另一个同类对象具有相同的属性和值,在 C++ 中,拷贝构造函数通常采用另一个同类对象作为参数,并使用该对象初始化新对象,本文给大家讲讲何时需要拷贝函数,需要的朋友可以参考下
    2023-09-09
  • C语言模拟实现库函数详解

    C语言模拟实现库函数详解

    C语言库函数是把自定义函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供程序员使用,下面让我们一起来详细了解它
    2022-07-07
  • Qt timerEvent实现简单秒表功能

    Qt timerEvent实现简单秒表功能

    这篇文章主要为大家详细介绍了Qt timerEvent实现简单秒表功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言数据结构中定位函数Index的使用方法

    C语言数据结构中定位函数Index的使用方法

    这篇文章主要介绍了C语言数据结构中定位函数Index的使用方法的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下
    2017-10-10
  • C++中for auto的用法及说明

    C++中for auto的用法及说明

    这篇文章主要介绍了C++中for auto的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • OpenCV识别提取图像中的水平线与垂直线

    OpenCV识别提取图像中的水平线与垂直线

    这篇文章主要为大家详细介绍了OpenCV识别提取图像中的水平线与垂直线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C++自定义数据类型方法详情

    C++自定义数据类型方法详情

    这篇文章主要介绍了C++自定义数据类型方法详情,总结了两种方法,分别是typedef声明和枚举类型enum,相关内容需要的小伙伴可以参考下面文章内容,希望对你的学习有所帮助
    2022-03-03
  • C++计数排序详解

    C++计数排序详解

    计数排序的思想我们之前接触过的例如:插入排序,归并排序,快速排序,堆排序等都是基于集合元素之间的比较这一基本的思想,它们执行的时间复杂度最优是趋于O(nlgn),而计数排序的运行机制不是基于集合元素之间的大小比较
    2016-04-04
  • Qt专栏之模态与非模态对话框的实现

    Qt专栏之模态与非模态对话框的实现

    这篇文章主要介绍了Qt专栏之模态与非模态对话框的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论