エポックからの秒数で double を に変換する必要がありptime
ます。これを行う簡単な方法があるに違いないと確信していますが、何も見つかりませんでした。ありがとう。
編集:元のタイムスタンプは浮動小数点です。私はそれを変更することはできませんし、1 秒未満の精度を失いたくありません。
エポックからの秒数で double を に変換する必要がありptime
ます。これを行う簡単な方法があるに違いないと確信していますが、何も見つかりませんでした。ありがとう。
編集:元のタイムスタンプは浮動小数点です。私はそれを変更することはできませんし、1 秒未満の精度を失いたくありません。
ブースト日時がマイクロ秒の解像度のデフォルトレベルにコンパイルされているマシンの場合は、次のことを試してください。
double ts = 1250524800.5;
// Use floor() here if seconds are always positive.
time_t secondsSinceEpoch = floor(ts);
long microsecondsSinceSecond =
floor((ts - static_cast<double>(secondsSinceEpoch)) * 1000000);
boost::posix_time::ptime result =
boost::posix_time::from_time_t(secondsSinceEpoch);
boost::posix_time::time_duration fractionalSeconds(0, 0, 0,
microsecondsSinceSecond);
result += fractionalSeconds;
cout << "Time stamp is " << result << endl;
これの出力は、私のLinuxボックスでは「タイムスタンプは2009年8月17日16:00:00.500000」です。
from_time_t()
変換機能を使用してください。Atime_t
はUNIXタイムスタンプ、つまりエポックからの秒数です。
いくつかいじった後、私はこれを思いつきました:
ptime(date(1970, 1, 1), time_duration(0, 0, 0, time_duration::ticks_per_second() * 1234567890.0987654321))
これが最善の解決策かどうかはわかりませんが、必要なことはできるようです。