日常开发中,获取系统时间是一个高频的代码片段,下面介绍如何获取当前时间以及如何按格式输出,代码如下:
#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(¤tTime);
timeInfo = localtime(¤tTime);
strftime(buffer, sizeof(buffer), "%Y:%m:%d %H:%M:%S", timeInfo);
return buffer;
}
调用方式:
结果展示: