不知道你可能出了什么问题;完全相同的代码对我有用。
$ cat > test.cc
#include <boost/date_time/gregorian/gregorian.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
使用命名空间 boost::posix_time;
int main() {
现在 ptime = second_clock::universal_time();
std::cout << "当前时间是:"<< to_iso_extended_string(now)<< std::endl;
ptime now_2 = microsec_clock::universal_time();
std::cout << "当前时间是:"<< to_iso_extended_string(now_2)<< std::endl;
返回0;
}
^D
$ c++ -lboost_date_time test.cc
$ ./a.out
当前时间是:2009-10-14T16:26:55
当前时间是:2009-10-14T16:26:55.586295
在实现方面,second_clock
使用time
和microsec_clock
使用gettimeofday
或GetSystemTimeAsFileTime
在下面,取决于平台。您的平台出现问题 - 您的操作系统和版本是什么?
你的 Boost 版本是多少?如果是 1.38 或更低版本,请升级到 1.39 或手动将修复应用到#2809 。
--- boost/date_time/filetime_functions.hpp(修订版 53621)
+++ boost/date_time/filetime_functions.hpp(修订版 53622)
@@ -96,9 +96,7 @@
{
/* shift 是 1970-Jan-01 和 1601-Jan-01 之间的差异
* 以 100 纳秒为间隔 */
- 常量 uint64_t c1 = 27111902UL;
- 常量 uint64_t c2 = 3577643008UL;// 在没有 'UL' 的情况下发出警告
- 常量 uint64_t shift = (c1 << 32) + c2;
+ 常量 uint64_t 移位 = 116444736000000000ULL;// (27111902 << 32) + 3577643008
联合{
FileTimeT as_file_time;
Windows FileTime 与 UNIX 时间有不同的偏移量,并且之前在 Boost 中的代码不会在某些优化编译器中生成正确的偏移量差异。