何が問題なのかわかりません。まったく同じコードが機能します。
$ 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 now = 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
プラットフォームに問題があるようです -- お使いの OS とバージョンは何ですか?
Boost のバージョンは?1.38 以下の場合は、1.39 にアップグレードするか、#2809の修正を手動で適用してください。
--- boost/date_time/filetime_functions.hpp (リビジョン 53621)
+++ boost/date_time/filetime_functions.hpp (リビジョン 53622)
@@ -96,9 +96,7 @@
{
/* シフトは 1970-Jan-01 と 1601-Jan-01 の差です
* 100 ナノ秒間隔で */
- const uint64_t c1 = 27111902UL;
- const uint64_t c2 = 3577643008UL; // 'UL' なしで警告を出す
- const uint64_t shift = (c1 << 32) + c2;
+ const uint64_t shift = 116444736000000000ULL; // (27111902 << 32) + 3577643008
組合{
FileTimeT as_file_time;
Windows FileTime には UNIX 時間とは異なるオフセットがあり、以前は Boost にあったコードは、特定の最適化コンパイラで正しいオフセット差を生成しませんでした。