zoukankan      html  css  js  c++  java
  • 获得指定时间的前一个时间的分组

    #include <iostream>
    #include <string>
    #include <vector>
    #include <sstream>
    using namespace std;
    
    
    
    // /*******************************************************
    /// @brief 获得指定时间的开始结束时间列表
    ///
    /// @param: tTime 时间戳
    /// @param: iInterval 时间分段间隔(分钟)
    /// @param: iOffset 偏移量(分钟)
    ///
    /// @returns:   vec[0]:starttime  vec[1]:endtime vec[2]:sleeptime
    // *******************************************************/
    vector<string> getTimeList(time_t tTime, int iInterval, int iOffset)
    {
        vector<string> timelist;
    
        time_t newTime = tTime - iOffset * 60;
        struct tm newTm;
    
        localtime_r(&newTime, &newTm);
        struct tm endTime = newTm;
        endTime.tm_min = int(newTm.tm_min / iInterval) * iInterval;
        endTime.tm_sec = 0;
    
        char buf[64];
        strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &endTime);
        timelist.insert(timelist.begin(), 1, buf);
    
        time_t startTime = mktime(&endTime) - iInterval * 60;
        localtime_r(&startTime, &newTm);
        struct tm sTime = newTm;
        sTime.tm_min = int(newTm.tm_min / iInterval) * iInterval;
        sTime.tm_sec = 0;
    
        memset(buf, 0, sizeof(buf));
        strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &sTime);
        timelist.insert(timelist.begin(), 1, buf);
    
        stringstream str;
        str<<mktime(&endTime) + iInterval * 60 + iOffset * 60 - tTime;
        timelist.push_back(str.str());
    
        return timelist;
    }
    
    // /*******************************************************
    /// @brief 字符串转换为时间
    ///
    /// @param: a_strTimeStr
    ///
    /// @returns:  时间戳
    // *******************************************************/
    time_t timeStr2Timestamp(const string &a_strTimeStr)
    {
        string::size_type pos = a_strTimeStr.find("-");
        string normalTime = "";
        if(pos != string::npos)
            normalTime = a_strTimeStr;
        else
        {
            normalTime = a_strTimeStr.substr(0, 4) + "-" + a_strTimeStr.substr(4,2) + "-" + 
                a_strTimeStr.substr(6,2) + " " + a_strTimeStr.substr(8,2) + ":" + a_strTimeStr.substr(10,2) + ":" + a_strTimeStr.substr(12,2); } tm time; strptime(normalTime.c_str(), "%Y-%m-%d %H:%M:%S", &time); return mktime(&time); } int main() { time_t now = time(NULL); vector<string> timelist = getTimeList(now, 20, 5); cout<<"now is "<<now<<",start:"<<timelist[0]<<", "<<"end:"<<timelist[1]<<",sleep "<<timelist[2]<<" seconds"<<endl; cout<<"@1 str to time is "<<timeStr2Timestamp("20160922173000")<<endl; cout<<"@2 str to time is "<<timeStr2Timestamp("2016-09-22 17:30:00")<<endl; return 0; }

  • 相关阅读:
    BFS(广搜训练题目)
    练习赛1(补题)
    练习赛1(AC题)
    codeup 1743: 算法3-4:表达式求值
    数学相关(更新ing)
    c语言常用函数(更新ing)
    大牛的博客(学习不止,更新不止)
    51nod 1005 大数加法
    js1-----预览js内容
    css10---转载---定位,浮动
  • 原文地址:https://www.cnblogs.com/foreverstars/p/5895434.html
Copyright © 2011-2022 走看看