Linux下的时间(ZZ)

2023-11-09

1Linux下的时间
   1.1
Linux下的时间系统
   1.2
Linux下与时间有关的数据结构

2、获得当前时间

3、延时

4、定时器
   4.1
alarm
   4.2
setitimer


1
Linux下的时间
1.1
Linux下的时间系统
   UNIX
Linux的时间系统是由"新纪元时间"Epoch(计算机时代开端)开始计算起,单位为秒,Epoch则是指定为 197011日 凌晨零点零分零秒,格林威治(GMT)时间。
   
目前大部份的UNIX系统都是用32位来记录时间,正值表示为1970以後,负值则表示1970年以前。我们可以很简单地计算出其时间范围: 

2^31/86400(s) = 24855.13481() ~ 68.0958(

1970+68.0958 = 2038.0958 
1970-68.0958 = 1901.9042 

时间范围为[1901.9042,2038.0958] 

    准确的时间为 2038118日 星期一晚上十点十四分七秒。那一刻,时间将会转为负数,变成 19011213日 黑色星期五下午三点四十五分五十二秒,这就是所谓的UNIX 2038 BUG,或者您也可戏称为Jason hatchet bug。在大部份的UNIX上,并没有所谓Y2K问题,不过都有2038年问题。 


1.2
Linux下与时间有关的数据结构

struct timeval { 
    int tv_sec; 
    int tv_usec; 
}; 
其中tv_sec是由Epoch开始算起的秒数,tv_usec则是微秒(10E-6 second) 

struct timezone { 
    int tv_minuteswest; 
    int tv_dsttime; 
}; 
tv_minuteswest
是格林威治时间往西方的时差,tv_dsttime则是时间的修正方式。 

struct timespec 

    long int tv_sec; 
    long int tv_nsec; 
}; 
tv_nsec
nano second(10E-9 second) 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下的时间(ZZ) 的相关文章

随机推荐