C语言,time.h中得mktime函数测试出一些问题,当tm_hour = 0时,转化成前一天了

mktime函数,当tm结构体,当tm_hour为零的时候,会将时间转化到前一天,
tm_hour 不为零的时候,就没有问题。小菜一枚,help~没有币~~抱歉~

#include
#include
void printTime(struct tm * time){
printf("%d-%d-%d %d:%d:%d\n",time->tm_year+1900,time->tm_mon+1,time->tm_mday,time->tm_hour,time->tm_min,time->tm_sec);
}
struct tm str2time(char * str){
struct tm tmp_time = (struct tm *)malloc(sizeof(struct tm));
strptime(str,"%Y%m%d",tmp_time);
return *tmp_time;
}
int main(int argc, const char * argv[]) {
struct tm tmp_time =str2time("201509021");//将字符串转成时间
printTime(&tmp_time);
time_t t = mktime(&tmp_time);//该函数有问题。。。。。
tmp_time = *localtime(&t);//本地时间
printf("%s:\n","本地时间");
printTime(&tmp_time);
}
结果如下:
2015-9-21 0:0:0
本地时间:
2015-9-20 23:0:0

1个回答

自己对tm结构理解有问题,tm_hour =0 ,表示的本来就应该是前一天24点,其他的1~23分别表示的是1时到23时。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐