u010427515
只求人生若初
采纳率0%
2015-09-21 03:27 浏览 3.1k

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条回答 默认 最新

  • u010427515 只求人生若初 2015-09-21 05:17

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

    点赞 评论 复制链接分享

相关推荐