c++ 标准 字符串转换为时间 时间大小比较 判断有效期 简洁办法

原帖地址:

https://www.cnblogs.com/maphc/p/3462952.html

c# php delphi java 等各种语言 对字符串转换为日期 然后与当前日期进行比较 是非常容易的 因为有现成的函数可用

标准 c++ 硬是找不到 合适的代码可用

于是

百度了很多 没百出个结果

于是综合网上资料 自己优化了下 直接拿来用 即可

 

time_t str_to_time_t(const string& ATime, const string& AFormat="%d-%d-%d")  
{  
    struct tm tm_Temp;  
    time_t time_Ret;  
    try 
    {
        int i = sscanf(ATime.c_str(), AFormat.c_str(),// "%d/%d/%d %d:%d:%d" ,       
                    &(tm_Temp.tm_year),   
                    &(tm_Temp.tm_mon),   
                    &(tm_Temp.tm_mday),  
                    &(tm_Temp.tm_hour),  
                    &(tm_Temp.tm_min),  
                    &(tm_Temp.tm_sec),  
                    &(tm_Temp.tm_wday),  
                    &(tm_Temp.tm_yday));  
             
        tm_Temp.tm_year -= 1900;  
        tm_Temp.tm_mon --;  
        tm_Temp.tm_hour=0;  
        tm_Temp.tm_min=0;  
        tm_Temp.tm_sec=0;  
        tm_Temp.tm_isdst = 0;
        time_Ret = mktime(&tm_Temp);  
        return time_Ret;  
    } catch(...) {
        return 0;
    }
}  

time_t NowTime()
{
    time_t t_Now = time(0);
    struct tm* tm_Now = localtime(&t_Now);
    tm_Now->tm_hour =0;
    tm_Now->tm_min = 0;
    tm_Now->tm_sec = 0;
    return  mktime(tm_Now);  
}

bool IsValidTime(const time_t& AEndTime, const time_t& ANowTime )
{
    return (AEndTime >= ANowTime);
}

方法调用:

string sEndTime ="2013-12-9";
string sTemp;
time_t t_Now = NowTime();
time_t t_End = str_to_time_t(sEndTime);
if (IsValidTime(t_End, t_Now)) {
sTemp = "有效日期";
} else {
sTemp = "时间过期";
}

 

 

  

++新增两个通用方法 (新增date(double) to time_t) +time_t to string

 

string time_t_to_str(const time_t &ATime_t, const string& AFormat="%d-%d-%d")
{
    char chRet[15];
    string sRet;
    struct tm *p;
    try
    {
        p = localtime(&ATime_t);
        p->tm_year = p->tm_year + 1900;
        p->tm_mon = p->tm_mon + 1;
        sprintf(chRet, AFormat.c_str(),
            p->tm_year, p->tm_mon, p->tm_mday);
        sRet = chRet;
        return sRet;
    } catch(...) {
        return "";
    }
}

time_t date_to_timet( double ADate, bool AClearDecimal= false) 
{
    if (AClearDecimal){
        ADate = int(ADate);
    }
    return (time_t)((Adate-25569)*(24*60*60)-timezone + 0.5 );
}

//    time_t dttime = date_to_timet(41618.9023, true);
[DATE]double(41618)=string("2013-12-10")
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值