class timestamp:public mymuduo::copyable, public boost::equality_comparable<timestamp>, public boost::less_than_comparable<timestamp> { };
主要是实现了时间戳的相关操作,例如时间戳的格式化,返回当前时间戳等等。
成员变量:
private: int64_t m_microSeconds;//数据成员,表示时间戳的微秒数 public: static const int microSecInSec=1000*1000;//1秒=1000*1000微妙
成员函数:
timestamp():m_microSeconds(0); //构造函数,设置mircroseconds值 explicit timestamp(int64_t ms):m_microSeconds(ms); //交换两个timestamp对象的值 void swap(timestamp& that); //用std::string形式返回,格式[millisec].[microsec] string toString() const; //格式, "%4d年%02d月%02d日 星期%d %02d:%02d:%02d.%06d",时分秒.微秒 string toFormattedString(bool ifShowMicroSec=true) const; //判断当前时间错是否合法,即是否>0 bool valid() const; //返回当前时间戳的微妙 int64_t microSecSinceEpoch() const; //返回当前时间戳的秒数 time_t secSinceEpoch() const; //返回当前时间所在的时间戳 static timestamp now(); static timestamp invalid(); //返回time_t所在的时间戳 static timestamp fromUnixTime(time_t t); //返回time_t以microsec为偏移所在的时间戳 static timestamp fromUnixTime(time_t t,int microsec);
类外相关函数:
应当注意timestamp继承了boost等于和小于类,为了实现timestamp的比较操作符,应当重载timestamp的<和==操作符。
//继承了boost的比较类,需要自己实现<和==操作符的重载 inline bool operator<(timestamp l,timestamp r) { return l.microSecSinceEpoch()<r.microSecSinceEpoch(); } inline bool operator==(timestamp l,timestamp r) { return l.microSecSinceEpoch()==r.microSecSinceEpoch(); } //返回两个时间戳的差,用秒的形式返回 inline double timeDifference(timestamp high,timestamp low) { int64_t diff=high.microSecSinceEpoch()-low.microSecSinceEpoch(); return static_cast<double>(diff/timestamp::microSecInSec); } //返回一个时间戳加上给定秒数的新的时间戳 inline timestamp addTime(timestamp ts,double sec) { int64_t microsec=ts.microSecSinceEpoch()+ static_cast<int64_t>(sec)*timestamp::microSecInSec; return timestamp(microsec); }
原文:https://www.cnblogs.com/woodineast/p/13545147.html