时间戳转字符串
来源:https://blog.csdn.net/xb_2015/article/details/122220722
#include <chrono>
#include <ctime>
#include <iomanip>
#include <sstream>
std::string timestr(unsigned int sec) {
time_t t = sec;
std::tm tms;
std::ostringstream oss;
if(gmtime_r(&t, &tms)) {
oss << std::put_time(&tms, "%Y-%m-%d %H:%M:%S");
return oss.str();
}
return "";
}
获取时间戳 方法一
来源:https://stackoverflow.com/questions/6012663/get-unix-timestamp-with-c
#include <iostream>
#include <chrono>
unsigned int timestamp() {
const auto p1 = std::chrono::system_clock::now();
int secs = std::chrono::duration_cast<std::chrono::seconds>(p1.time_since_epoch()).count();
return secs;
}
int main()
{
const auto p1 = std::chrono::system_clock::now();
int secs = std::chrono::duration_cast<std::chrono::seconds>(
p1.time_since_epoch()).count();
std::cout << "seconds since epoch: "
<< secs << '\n';
}
注意⚠️:计算时间差 duration
的最后,需要调用 count()
方法。
获取时间戳 方法二
Using C++17 or earlier
来源:https://en.cppreference.com/w/cpp/chrono/c/time
#include <ctime>
#include <iostream>
int main()
{
std::time_t result = std::time(nullptr);
std::cout << std::asctime(std::localtime(&result))
<< result << " seconds since the Epoch\n";
}
输出:
Wed Sep 21 10:27:52 2011
1316615272 seconds since the Epoch
获取时间戳 方法三:获取毫秒时间戳
来源:https://en.cppreference.com/w/cpp/chrono/duration/duration_cast
#include <chrono>
#include <iostream>
#include <ratio>
#include <thread>
void f()
{
std::this_thread::sleep_for(std::chrono::seconds(1));
}
int main()
{
const auto t1 = std::chrono::high_resolution_clock::now();
f();
const auto t2 = std::chrono::high_resolution_clock::now();
// floating-point duration: no duration_cast needed
const std::chrono::duration<double, std::milli> fp_ms = t2 - t1;
// integral duration: requires duration_cast
const auto int_ms = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1);
// converting integral duration to integral duration of
// shorter divisible time unit: no duration_cast needed
const std::chrono::duration<long, std::micro> int_usec = int_ms;
std::cout << "f() took " << fp_ms << ", or "
<< int_ms << " (whole milliseconds), or "
<< int_usec << " (whole microseconds)\n";
}
其中,计算时间差的时候,可以将 const auto int_ms = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1);
替换为 const auto msdur = std::chrono::duration_cast<std::chrono::milliseconds>(t1.time_since_epoch());
,也就是计算当前时间和 1971
年的时候的时间差。