简单C++ 时间戳类

C++时间函数

#include <iostream>
#include <string>
#include <cstring>
#include <ctime>
using namespace std;


class HistoryCache
{
    
    
public:
   static std::string getTimeStamp(time_t epochTime, const char* format = "%Y-%m-%d %H:%M:%S")
   {
    
    
      char timestamp[64] = {
    
    0};
      strftime(timestamp, sizeof(timestamp), format, localtime(&epochTime));
      return timestamp;
   }

   static time_t convertTimeToEpoch(const char* theTime, const char* format = "%Y-%m-%d %H:%M:%S")
   {
    
    
      std::tm tmTime;
      memset(&tmTime, 0, sizeof(tmTime));
      strptime(theTime, format, &tmTime);
      return mktime(&tmTime);
   }
};

int main()
{
    
    
    // get current epoch time
    const time_t curTime = time(0);

   // convert current time to a string
   std::string curTimeStr = HistoryCache::getTimeStamp(curTime);

   // convert string time to an epoch time
    const time_t curTime2 = HistoryCache::convertTimeToEpoch(curTimeStr.c_str());
   // display results
   std::cout << "Epoch Time: " << curTime    << "\n" << "As string : " << curTimeStr << "\n"  << "Epoch Time: " << curTime2  << std::endl;
}

结果:

[root@jn cpp]# g++ time.cpp 
[root@jn cpp]# ./a.out 
Epoch Time: 1619351221
As string : 2021-04-25 19:47:01
Epoch Time: 1619351221
[root@jn cpp]# 

C++时间类

m_time.cpp:

#include <iostream>
#include <ctime>
#include <atomic>

extern"C"
{
    
    
#include <unistd.h>
}

class timeKit
{
    
    
public:
        timeKit(){
    
    
                buffer = new char[20];
                //TM = new struct tm;
        }

        ~timeKit(){
    
    
                if (buffer) {
    
    
                        delete[] buffer;
                }

                if (TM) {
    
    
                        //delete TM;
                }
        }

        inline std::string TimeStr() {
    
    
                Epoch();
                TM = localtime(&m_Time);
                strftime(buffer, 20, "%Y-%m-%d %H:%M:%S", TM);
                return m_TimeStr = std::string(buffer) + " ";
        }

        inline time_t Epoch(){
    
     time(&m_Time); return m_Time;}
private:
        //std::atomic<bool> m_lock;
        char*  buffer;
        struct tm *TM;
        time_t m_Time;
        std::string m_TimeStr;
};


#ifdef dujn_debug
using namespace std;

/* compile : g++ m_time.cpp -Ddujn_debug -std=c++11 */
int main(){
    
    
    timeKit mt;
    //cout << mt.getEpoch() << " : start" << endl;
    cout << mt.TimeStr() << " : 万丈高楼平地起"<< endl;
}
#endif

结果:

[root@jn cpp]# g++ m_time.cpp -Ddujn_debug -std=c++11
[root@jn cpp]# ./a.out
2021-11-03 11:01:16 : 万丈高楼平地起
[root@jn cpp]#

Guess you like

Origin blog.csdn.net/weixin_44328568/article/details/121117072