C++ Code Snippet -- 当前时间的获取方式

72 阅读1分钟

日常开发中,获取系统时间是一个高频的代码片段,下面介绍如何获取当前时间以及如何按格式输出,代码如下:

#include <cstdint>
#include <string>

class TimeUtils {

public:

    /**
     * 当前时间,单位为秒
     */
    static uint64_t getSystemTimeSecond();

    /**
     * 当前时间,单位为毫秒
     * @return
     */
    static uint64_t currentTimeMillis();

    /**
     * 当前时间,单位为微妙
     * @return
     */
    static uint64_t currentTimeMicrosecond();

    /**
     *  获取当前时间 YYYY:MM:DD HH:MM:SS
     */
    static std::string getCurrentFormatTime();


};
#include "TimeUtils.h"
#include "chrono"

/**
 * 当前时间,单位为秒
 */
uint64_t TimeUtils::getSystemTimeSecond() {
    time_t curTime;
    time(&curTime);
    return curTime;
}

/**
 * 当前时间,单位为毫秒
 */
uint64_t TimeUtils::currentTimeMillis() {
    auto tp = std::chrono::time_point_cast<std::chrono::milliseconds>(
            std::chrono::system_clock::now());
    auto tmp = std::chrono::duration_cast<std::chrono::milliseconds>(tp.time_since_epoch());
    long long int timestamp = tmp.count();
    return static_cast<uint64_t>(timestamp);
}

/**
 * 当前时间,单位为微妙
 */
uint64_t TimeUtils::currentTimeMicrosecond() {
    auto tp = std::chrono::time_point_cast<std::chrono::microseconds>(
            std::chrono::system_clock::now());
    auto tmp = std::chrono::duration_cast<std::chrono::microseconds>(tp.time_since_epoch());
    long long int timestamp = tmp.count();
    return static_cast<uint64_t>(timestamp);
}

/**
 *  获取当前时间 YYYY:MM:DD HH:MM:SS
 */
std::string TimeUtils::getCurrentFormatTime() {
    time_t currentTime;
    struct tm *timeInfo;
    char buffer[128];
    time(&currentTime);
    timeInfo = localtime(&currentTime);
    strftime(buffer, sizeof(buffer), "%Y:%m:%d %H:%M:%S", timeInfo);
    return buffer;
}

调用方式:

image.png

结果展示:

image.png