首页 > 其他分享 >localtime_r与gmtime_r

localtime_r与gmtime_r

时间:2023-11-13 14:11:39浏览次数:29  
标签:tmp gmtime result time 时区 localtime

简单说

gmtime_r转换与时区没关系,为UTC时间;

localtime_r与时区相关,为本地时间。

好记性不如烂笔头,记录一下。

 

参考:https://www.python100.com/html/115143.html

localtime_r函数的实现原理是基于时区的概念,它通过读取系统的时区文件来进行时区的转换。时区文件存放在目录"/usr/share/zoneinfo"下面,Linux系统中默认采用UTC时区,时区文件相对的路径是"/usr/share/zoneinfo/UTC"。

localtime_r函数会读取时区文件,从而获取本地时区的偏移量,将时间戳加上该偏移量就可以得到本地时间。具体实现可以参考下面的代码:

struct tm *localtime_r(const time_t *timep, struct tm *result)
{
    time_t time = *timep;
    struct tm *tmp;

    tmp = gmtime_r(&time, result);
    if (tmp == NULL)
        return NULL;

    time -= timezone;
    tmp = gmtime_r(&time, result);
    if (tmp == NULL)
        return NULL;

    result->tm_isdst = -1;
    return result;
}

 函数首先调用gmtime_r函数将时间戳转换为UTC时间,然后将UTC时间减去时区偏移量得到本地时间,并再次调用gmtime_r函数将本地时间转化为时间结构体。

 

标签:tmp,gmtime,result,time,时区,localtime
From: https://www.cnblogs.com/orange-CC/p/17828980.html

相关文章

  • JDK8之后新增的时间-LocalDate、LocalTime、LocalDateTime、ZoneId、ZoneDateTime
    LocalDate:代表本地日期(年、月、日、星期)LocalTime:代表本地时间(时、分、秒、纳秒)LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)(其三者都可以调用now()方法,且其对象内容不一样)LocalDate:  (获取的本地对象是一个不可变对象) (注意:修改之后是创建了......
  • java8 新特性之日期时间处理 LocatDate、LocalTime、LocalDateTime、ZonedDateTime、D
    一、LocalDate、LocalTime、LocalDateTime和常用API1、LocalDatepublicvoidtest01(){//1.创建指定的日期LocalDatedate1=LocalDate.of(2021,05,06);System.out.println("date1="+date1);//2.得到当前的日期LocalDate......
  • 解决Java 随机LocalTime的具体操作步骤
    如何实现Java随机LocalTime简介在Java中,我们可以使用java.time.LocalTime类来表示一个不带时区的时间,它包含小时、分钟、秒以及纳秒。本文将介绍如何在Java中生成随机的LocalTime。流程下面是实现Java随机LocalTime的步骤:步骤描述1导入java.time包......
  • java8 LocalDateTime/LocalDate/LocalTime、java.util.Date/java.sql.Date区别及日期
    先介绍一下,LocalDateTime/LocalDate/LocalTime、java.util.Date/java.sql.Date区别LocalDateTime/LocalDate/LocalTimejava.time.LocalDateTime,是一个日期+时间,不带时区,它是个不可更改对象,精确到纳秒。它的日期可以认为是生日,它的时间可以认为是挂钟的时间,比较LocalDateTime时用eq......
  • 时间转换(tm,mktime,localtime)
    intyear=0;   intmonth=0;   intday=0;   sscanf((char*)strDateInfo,"%4d%2d%2d",&year,&month,&day);    structtmparaTime={0,0,0,day,month-1,year-1900};   __time32_tcurDay= _mktime32(&paraTime);......
  • LocalTime 持续时长计算
    publicclassDurationUtil{privatestaticfinalLoggerlog=LoggerFactory.getLogger(DurationUtil.class);publicstaticdoubletoHours(Temporalstart,Temporalend){longminutes=Duration.between(start,end).toMinutes();long......
  • JDK 8 新时间LocalDate、LocalTime、LocalDateTime
            ......
  • jdk1.8 LocalTime、LocalDate、LocalDateTime 使用大全
    目录LocalTime、LocalDate、LocalDateTime区别LocalTime、LocalDate、LocalDateTime使用now获取当前时刻、日期、时间of获取指定时刻、日期、时间plus||minus增加或者减少更改指定的时间isAfter||isBefore比较大小compareTo时间比较LocalTime、LocalDate、LocalDate......
  • time_t now=time(NULL); std::cout<<ctime(&another_time);tm* ltm = localtime(&now)
    #include<iostream>#include<iomanip>#include<ctime>#include<windows.h>intmain(){time_tnow=time(NULL);tm*ltm=localtime(&now);std::cout<<ctime(&now);std::cout<<"Year:"......
  • jdk1.8 LocalDate、LocalTime、LocalDateTime
    LocalDate、LocalTime、LocalDateTime区别LocalDate使用基础使用LocalDate、LocalTime、LocalDateTime区别LocalDate、LocalTime、LocalDateTime是java8对日期、时间提供的新接口。相比于SimpleDateFormat,线程安全。LocalDate用于日期的计算LocalTime用于时刻的......