如何在微秒内得到世界协调时间,并调整闰秒?我正在使用boost::universal_clock()
boost::posix_time::time_duration utc_time =
boost::posix_time::microsec_clock::universal_time() -
boost::posix_time::from_time_t(0);
int64_t total_microsec = utc_time.total_microseconds(); 但结果是一样的
std::chrono::time_point_cast<std::chrono::duration<int64_t, std::microseconds>>(
std::chrono::system_clock::now())
.time_since_epoch()
.count();这似乎并不是在调整闰秒。然而,当我使用C gmtime()时,我得到了不同的结果:
time_t mytime;
struct tm *ptm;
time(&mytime); // Get local time in time_t
ptm = gmtime(&mytime); // Find out UTC time
time_t utctime = mktime(ptm); // Get UTC time as time_t如何使用boost库实现它?
发布于 2019-08-09 23:50:15
使用霍华德·辛纳特的日期/时间库非常容易:
#include "date/tz.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std;
using namespace std::chrono;
auto now = floor<microseconds>(utc_clock::now());
cout << now << '\n';
cout << now.time_since_epoch() << '\n';
cout << clock_cast<system_clock>(now).time_since_epoch() << '\n';
}这是的预览,但在namespace date中。
utc_clock计算自1970-01-01 :00:00 UTC的时间,包括闰秒.为了便于比较,clock_cast将time_point从这个时钟转换回system_clock的时钟。
这个程序刚输出给我:
2019-08-10 00:19:04.388788
1565396371388788µs
1565396344388788µshttps://stackoverflow.com/questions/57438185
复制相似问题