使用C ++和Boost获取当前时间(以毫秒为单位)

在我的线程(使用boost :: thread)我需要检索当前时间在毫秒或更less,并转换为MS:

其实,在这里阅读我发现这个:

tick = boost::posix_time::second_clock::local_time(); now = boost::posix_time::second_clock::local_time(); 

而似乎工作,但我需要有一个毫秒的现在长时间的价值…

我该怎么做?

你可以使用boost::posix_time::time_duration来获得时间范围。 像这样

 boost::posix_time::time_duration diff = tick - now; diff.total_milliseconds(); 

为了获得更高的分辨率,你可以改变你正在使用的时钟。 例如boost::posix_time::microsec_clock ,虽然这可以取决于操作系统。 例如,在Windows上, boost::posix_time::microsecond_clock分辨率为毫秒,而不是微秒。

一个例子是一点点依赖于硬件。

 int main(int argc, char* argv[]) { boost::posix_time::ptime t1 = boost::posix_time::second_clock::local_time(); boost::this_thread::sleep(boost::posix_time::millisec(500)); boost::posix_time::ptime t2 = boost::posix_time::second_clock::local_time(); boost::posix_time::time_duration diff = t2 - t1; std::cout << diff.total_milliseconds() << std::endl; boost::posix_time::ptime mst1 = boost::posix_time::microsec_clock::local_time(); boost::this_thread::sleep(boost::posix_time::millisec(500)); boost::posix_time::ptime mst2 = boost::posix_time::microsec_clock::local_time(); boost::posix_time::time_duration msdiff = mst2 - mst1; std::cout << msdiff.total_milliseconds() << std::endl; return 0; } 

在我的win7机器上。 第一个是0或1000.第二个分辨率。 第二个几乎总是500,因为时钟分辨率更高。 我希望有一点帮助。

如果你的意思是从时代开始你可以做的毫秒

 ptime time_t_epoch(date(1970,1,1)); ptime now = microsec_clock::local_time(); time_duration diff = now - time_t_epoch; x = diff.total_milliseconds(); 

但是,这并不是特别清楚。

查看Boost Date Time的 DateTime文档中的示例

 // Get current date/time in milliseconds. #include "boost/date_time/posix_time/posix_time.hpp" namespace pt = boost::posix_time; int main() { pt::ptime current_date_microseconds = pt::microsec_clock::local_time(); long milliseconds = current_date_microseconds.time_of_day().total_milliseconds(); pt::time_duration current_time_milliseconds = pt::milliseconds(milliseconds); pt::ptime current_date_milliseconds(current_date_microseconds.date(), current_time_milliseconds); std::cout << "Microseconds: " << current_date_microseconds << " Milliseconds: " << current_date_milliseconds << std::endl; // Microseconds: 2013-Jul-12 13:37:51.699548 Milliseconds: 2013-Jul-12 13:37:51.699000 } 

试试这个:如上所述导入头文件。只给出秒和毫秒。 如果您需要解释代码,请阅读此链接 。

 #include <windows.h> #include <stdio.h> void main() { SYSTEMTIME st; SYSTEMTIME lt; GetSystemTime(&st); // GetLocalTime(&lt); printf("The system time is: %02d:%03d\n", st.wSecond, st.wMilliseconds); // printf("The local time is: %02d:%03d\n", lt.wSecond, lt.wMilliseconds); }