这个类主要是获取当前时间,以及把当前时间转换为字符串打印出来。

Timestamp.h

#pragma once
#include <iostream>

class Timestamp
{
   
public:
    Timestamp();
    explicit Timestamp(int64_t microSecondsSinceEpoch);
    //获取当前时间
    static Timestamp now();
    //int64 转换为字符串
    std::string toString() const;
private:
    int64_t microSecondsSinceEpoch_;
};

Timestamp.cc

#include "Timestamp.h"

#include <ctime>

Timestamp::Timestamp():microSecondsSinceEpoch_(0){
   }

Timestamp::Timestamp(int64_t microSecondsSinceEpoch)
    :microSecondsSinceEpoch_(microSecondsSinceEpoch)
    {
   }

//获取当前时间
Timestamp Timestamp::now()
{
   
    return Timestamp(time(NULL));
}
//int64 转换为字符串并打印信息
std::string Timestamp::toString() const
{
   
    char buf[128] = {
   0};
    /* tm是个数据结构 *struct tm { int tm_sec; // seconds after the minute - [0, 60] including leap second int tm_min; // minutes after the hour - [0, 59] int tm_hour; // hours since midnight - [0, 23] int tm_mday; // day of the month - [1, 31] int tm_mon; // months since January - [0, 11] int tm_year; // years since 1900 int tm_wday; // days since Sunday - [0, 6] int tm_yday; // days since January 1 - [0, 365] int tm_isdst; // daylight savings time flag }; */
    tm* tm_time = localtime(&microSecondsSinceEpoch_);

    //打印年月日,因为年从1900开始,月从0开始
    snprintf(buf,128,"%4d/%02d/%02d %02d:%02d:%02d",
    tm_time->tm_year + 1900,
    tm_time->tm_mon + 1,
    tm_time->tm_mday,
    tm_time->tm_hour,
    tm_time->tm_min,
    tm_time->tm_sec);

    return buf;
}

参考文献

[1] 施磊.重写moduo库.图论科技.2020.7.