加入日期&两个time_t值的时间

时间:2012-10-16 19:06:10

标签: c++ datetime time

我编写了一个函数,我相信它将从一个time_t加入日期组件,从另一个加入时间组件:

time_t joinDateTime( time_t date, time_t time )
{
    tm tm_date( *gmtime( &date ) ), tm_time( *gmtime( &time ) );

    tm_date.tm_hour = tm_time.tm_hour;
    tm_date.tm_min = tm_time.tm_min;
    tm_date.tm_sec = tm_time.tm_sec;

    return mktime( &tm_date );
}

此功能不应执行任何时区转换,但mktime()显然假定您提供的时间结构位于本地时区,并将其转换为UTC 0.如何修改此功能以不应用mktime()提供的时区转换?

2 个答案:

答案 0 :(得分:2)

time_t始终为UTC时间。如果这就是你想要的,那么有更直接的方式来加入日期和时间。由于测量时间以秒为单位,因此您可以除以获得天数并将剩余时间用于该时间。

time_t joinDateTime( time_t date, time_t time )
{
    time_t days = date / (24*60*60);
    time_t seconds = time % (24*60*60);

    return days*24*60*60 + seconds;
}

答案 1 :(得分:0)

gmtime的

struct tm * gmtime ( const time_t * timer );

将time_t转换为tm作为UTC时间

使用gmtime

时会发生转换

使用struct tm * localtime ( const time_t * timer );代替