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

    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")
     

     

  • 相关阅读:
    C语言 · 报时助手
    C语言 · 完美的代价
    C语言 · 十六进制转八进制
    C语言 · 十六进制转十进制
    C语言 · 芯片测试
    C语言 · 素数求和
    C语言 · 五次方数
    Lodop多分出空白页的可能(情况1)
    C-Lodop提示“网页还没下载完毕,请稍等一下再操作.”
    Lodop简答问答大全
  • 原文地址:https://www.cnblogs.com/maphc/p/3462952.html
Copyright © 2011-2022 走看看