当前位置:   article > 正文

linux平台设置系统时间_linux settimeofday

linux settimeofday

我们在本文中总结了获取系统时间的各种方法,

本文总结设置系统时间的方法

1、前言

如上图所示:通过time函数取得世纪秒,-----》通过localtime 转换成struct tm----------->通过mktime函数又转换成time_t格式。 

 

1)time_t mktime(strcut tm * timeptr);

#include <time.h>

mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。

返回经过的秒数。

实质:是将 struct tm 结构转换成----->time_t(也就是long类型)

示例:

  1. #include <stdio.h>
  2. #include <time.h>
  3. main()
  4. {
  5. time_t timep;
  6. strcut tm *p;
  7. time(&timep);
  8. printf("time() : %d /n",timep);
  9. p=localtime(&timep);
  10. timep = mktime(p);
  11. printf("time()->localtime()->mktime():%d/n",timep);
  12. }
  13. 执行
  14. time():974943297
  15. time()->localtime()->mktime():974943297
  16. ————————————————
  17. 上述示例转载:
  18. 版权声明:本文为CSDN博主「小宇巴巴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
  19. 原文链接:https://blog.csdn.net/xuefu2008/article/details/4645899

2、设置系统时间------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  时区或某个数据是不正确的,无法正确设置时间。
————————————————
版权声明:本文为CSDN博主「Michaelwubo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Michaelwubo/article/details/41119905

 

可以看到,我们使用settimeofday函数来设置系统时间,此时时间的数据类型又变为 struct timevalue了。

 

  1. struct timeval now;
  2. struct tm local; //
  3. local.tm_year = year-1900;
  4. local.tm_mon = mon - 1;
  5. local.tm_mday = day;
  6. local.tm_hour = hour;
  7. local.tm_min = min;
  8. local.tm_sec = sec;
  9. time_t gps_soc=mktime(&local);
  10. now.tv_sec=gps_soc;
  11. now.tv_usec=0;
  12. settimeofday(&now,NULL);

上例我们可以看到,我们并没有使用通过time();函数直接获取soc,   而是通过mktime函数将 struct tm 结构体 先转换成了soc,这是因为我们自定义了一个struct tm 的变量local,,此变量的各个值需要我们去赋值

3、总结:

以上的时间,总共涉及到三种数据类型:

time_t(也就是long)

struct tm;

struct timeval;

 

 

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号