美文网首页
linux时间相关函数

linux时间相关函数

作者: 浙南旧事 | 来源:发表于2022-03-27 14:54 被阅读0次
    time.jpg
    1. 以单独秒数做为参数或返回值的,都是指UTC时间,它跟时区没有关系。

    2. 不考虑时区,秒数与年月日时分秒的转换是有固定算法的(闰),它与真实世界实际的秒有差别。
      在应用层可以用gmtime函数,在内核层可以看rtc_time64_to_tm,mktime64函数。

    3. gettimeofday,time,gmtime,localtime,mktime,ctime,asctime7个函数中,其实只有localtime,mktime,ctime3个函数是时区相关的,剩余4个都是时区不相关的。
      gettimeofday,time就是纯粹获取秒数(UTC)。
      gmtime根据一套算法把秒数(UTC)转成年月日时分秒。
      asctime就是纯粹的数值转字符串。
      ctime(t)等价于asctime(localtime(t))。
      因此,时区相关的实际只有localtime和mktime这对反函数。

    4. localtime,mktime,ctime三个时区相关的函数,它们的实现应该会调用tzset这个函数。
      tzset函数会用TZ环境变量去初始化tzname变量。在类System-V的环境中,此函数还会设置timezone,daylight变量。如果没有TZ这个环境变量,则会在一些常用的地方寻找时区文件(/etc/localtime等)。

    5. 对于localtime,mktime,ctime三个时区相关的函数,调用它们之后,应该是要求它们去改tzname,timezone,daylight变量。而对于时区相关的可重入版本localtime_r,ctime_r,则没有这个要求(need not set)。即,调用这两个函数后,改tzname,timezone,daylight变量也可以,不改也可以。

    6. dst(daylight saving time)是指夏令时,我国在91年前后也实行过一段时间。我国的时区名是CST,正常情况tzname的两个值都是CST。当夏令时生效时,tzname的第二个值会变成CDT。

    相关文章

      网友评论

          本文标题:linux时间相关函数

          本文链接:https://www.haomeiwen.com/subject/oeqyjrtx.html