我编写了一个函数,我相信它将从一个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()
提供的时区转换?
答案 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 );
代替