时间字符串转换成自1970年1月1日以来持续时间的秒数

本文详细介绍了如何使用C语言实现特定格式的时间字符串到时间戳的转换。通过具体的代码示例,展示了如何解析“2018070200:15:45”这样的时间格式,并将其转换为标准时间表示形式。特别关注了atoi()函数的应用以及月份和年份的正确处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间格式是:20180702 00:15:45,这个时间是我所需要的格式。


time_t MriUIBI::convert_a_to_i(char * str_time)
{
    struct tm tt;
    memset(&tt,0,sizeof(tt));    
    tt.tm_sec=atoi(str_time+15);    
    tt.tm_min=atoi(str_time+12);     
    tt.tm_hour=atoi(str_time+9);     
    tt.tm_mday=atoi(str_time+6);      
    str_time[6]='\0';
    tt.tm_mon=atoi(str_time+4)-1;     
    str_time[4]='\0';
    tt.tm_year=atoi(str_time)-1900;   
    tt.tm_isdst = -1;                      

    return mktime(&tt);               
                                           
}

//1. atoi(), 遇上数字或正负符号才开始做转换,而在遇到非数字或字符串结束符('\0')才结束转换
//2.月份从0开始计算的,所以减1
//3.mktime(),算的是UTC,0时区时间,比北京时间晚8小时
//mktime() 将时间转换为自1970年1月1日以来逝去时间的秒数,发生错误时返回-1

  1970-01-01 08:00:00  这个时间是正常格式

time_t convert_str_to_tm(char * str_time)  //  
{
    struct tm tt;   
    memset(&tt,0,sizeof(tt));    
    tt.tm_year=atoi(str_time)-1900;    
    tt.tm_mon=atoi(str_time+5)-1;     
    tt.tm_mday=atoi(str_time+8);    
    tt.tm_hour=atoi(str_time+11);    
    tt.tm_min=atoi(str_time+14);    
    tt.tm_sec=atoi(str_time+17);    
    tt.tm_isdst = 0;

    return mktime(&tt);               
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值